制作macOS的安装包(.pkg)是一个将多个文件打包成一个安装文件的过程,这样用户可以通过双击.pkg文件来安装程序。
前提条件
- macOS 计算机
- 开发的软件和相应的资源文件
- pkgbuild 命令行工具
步骤
1. 准备你的软件内容
- 下载文件 Scriptsfolder
2. 创建安装包
- 创建一个打包项目 :使用
pkgbuild
创建组件包
-
打开「终端」应用。
-
使用
pkgbuild
命令创建组件包。组件包是可安装包的构建块,通常包含应用程序的实际文件。例如:csspkgbuild --root /path/to/your/app \ --identifier com.example.yourapp \ --version 1.0 \ --install-location /Applications/YourApp.app \ --component-plist /path/to/your/components.plist \ yourapp-component.pkg
--root
指定包含要打包文件的目录。--identifier
是一个唯一标识符,通常使用反向域名表示法。--version
指定应用程序的版本。--install-location
指定安装位置。--component-plist
是可选的,指定组件的属性列表文件。
- 添加脚本到项目: 在打包项目中包含安装脚本。通常,这涉及到定义 preinstall 或 postinstall 脚本来执行您的自定义安装步骤。 如果你的安装包需要运行上述 Bash 脚本,这意味着在安装过程中你需要执行一些自定义操作,XML文件复制到与Microsoft Office应用程序(Excel、PowerPoint和Word)相关的目录中。为了在 macOS 安装包中集成并自动运行此脚本,你可以采取以下步骤:
2.1. 将脚本保存为可执行文件
首先,确保你的脚本文件(比方说命名为 install_script.sh
)具有可执行权限。可以通过运行以下命令来设置权限:
bash
chmod +x install_script.sh
2.2. 创建安装包时包含此脚本
在使用 pkgbuild
或 productbuild
创建安装包时,确保你的脚本文件被包含在你的应用内容中。
2.3. 设置安装后脚本
在创建安装包的过程中,你需要指定你的 install_script.sh
作为一个"安装后脚本"(postinstall script)。这样,当用户安装你的包时,此脚本会在安装过程的最后自动执行。
使用 pkgbuild
的时候,可以使用 --scripts
参数指定一个包含脚本的文件夹。在这个文件夹中,应该有一个名为 postinstall
的脚本(没有扩展名),这个脚本会在安装之后执行。你可以将你的 install_script.sh
重命名为 postinstall
并放在这个文件夹里。
例如,如果你的脚本和应用内容都已准备好,你可以这样创建你的组件包:
bash
chmod +x MyAppScripts/postinstall
使用绝对路径(或确保相对路径正确)来引用脚本目录:
bash
pkgbuild --root MyAppContents --identifier com.example.myapp --version 1.0.0 --scripts /path/to/MyAppScripts MyAppComponent.pkg
其中,ScriptsFolder
是包含你的 postinstall
脚本的文件夹。 确保将 /path/to/MyAppScripts
替换为你的 MyAppScripts
目录的实际路径。
2.4. 注意
- 确保你的
postinstall
脚本符合 macOS 的安全性和兼容性要求,尤其是考虑到 macOS 的权限管理和安全性限制。 - 在
postinstall
脚本中,你可能需要处理不同用户权限级别的情况,因为脚本将以 root 权限执行。 - 测试你的安装包在各种环境下的行为,确保它按照预期工作,没有引入安全漏洞。
通过遵循上述步骤,你可以创建一个在安装时会自动执行定制脚本的 macOS 安装包。
签名过程
获取证书、安装证书
-
签名 pkg 安装包 : 使用
productsign
命令来给您的 pkg 安装包签名:bashproductsign --sign "Developer ID Installer: Your Name (Team ID)" "path/to/your/package.pkg" "path/to/your/signed_package.pkg"
将
"Developer ID Installer: Your Name (Team ID)"
替换为您在苹果开发者账户中的安装证书信息,并替换path/to/your/package.pkg
和path/to/your/signed_package.pkg
为您的原始和签名的包路径。1.1 注意 :
Developer ID Installer
和Developer ID Application
是苹果公司提供给非 App Store 分发的 Mac 应用程序的两种不同类型的证书,它们的作用和使用场景略有差异:
Developer ID Application
- 用途: 这个证书用来对 Mac 应用程序进行签名,确保应用程序的完整性和来源的可靠性。
- 场景: 当你想要分发不通过 Mac App Store 发布的应用程序时,你会使用这个证书来签名你的应用。用户可以在 Gatekeeper 的保护下安全地下载和安装这些应用程序。
- 签名工具: 在 Xcode 或使用命令行工具
codesign
时使用这个证书进行签名。
Developer ID Installer
- 用途: 这个证书用于签名安装包(.pkg),用来分发 Mac 应用程序或安装包含多个文件的复杂软件。
- 场景: 如果你想要创建一个安装程序(通常是.pkg格式),以便用户可以安装你的应用程序或多组件软件包,你需要使用这个证书来签名你的安装程序。
- 签名工具: 使用
productsign
命令行工具来签名.pkg安装包。
在实际使用中,如果你仅仅想要分发一个应用程序,你可能只需要 Developer ID Application
证书来签名你的.app文件。而如果你需要用户通过安装程序来安装你的应用或服务,你还需要 Developer ID Installer
证书来签名你的.pkg文件。
两者的共同点在于它们都用于在 Mac 系统的 Gatekeeper 外部分发应用程序,并且都要求开发者通过苹果的认证过程来获取。这些认证确保了应用程序的安全性,防止恶意软件的传播,并提供了一个可信赖的开发者身份验证。
查看安装的证书
bash
security find-identity -v
公证过程
-
上传安装包进行公证 : 使用
xcrun altool
命令来上传您的 pkg 文件进行公证:bashxcrun altool --notarize-app --primary-bundle-id "com.example.yourapp" --username "your@appleid.com" --password "app-specific-password" --file "path/to/your/signed_package.pkg"
"com.example.yourapp"
是您的 pkg 的唯一标识符。your@appleid.com
是您的苹果开发者账号邮箱。app-specific-password
是为公证过程生成的特定密码。"path/to/your/signed_package.pkg"
是您已经签名的 pkg 文件的路径。
-
等待公证过程完成 : 公证可能需要一些时间。您可以使用
xcrun altool
来检查公证状态。 -
公证完成后,附加公证信息 : 一旦您收到公证成功的通知,您可以使用
xcrun stapler
工具为您的应用附加公证信息。bashxcrun stapler staple "path/to/your/signed_package.pkg"
-
验证 : 要验证一个
.pkg
安装包是否已经成功签名和公证,您可以使用 macOS 的pkgutil
和spctl
命令行工具。这些工具能够帮助您检查.pkg
文件的签名状态,以及它是否通过了 Apple 的公证服务。以下是步骤和示例:
4.1. 检查签名
首先,您可以使用 pkgutil
来检查 .pkg
文件的签名信息:
shell
pkgutil --check-signature /path/to/your/package.pkg
将 /path/to/your/package.pkg
替换为您的 .pkg
文件的实际路径。这个命令会显示出包的签名信息,包括签名者的身份和证书状态。
4.2. 验证公证
然后,使用 spctl
命令来检查 .pkg
文件是否已经通过公证:
shell
spctl -a -t install -vv /path/to/your/package.pkg
这条命令会尝试验证 .pkg
文件,确保它符合 macOS 的安全政策,包括是否已经公证。如果文件通过了验证,您会看到一个包含 accepted
的消息。如果包含 source=Notarized Developer ID
,这说明 .pkg
文件已经被成功地公证。
4.3. 注意事项
- 如果您在验证过程中遇到任何错误或拒绝消息,这可能意味着
.pkg
文件没有被正确签名或公证。请确保您按照正确的流程进行签名和公证,并且所有的信息(包括开发者 ID 和团队 ID)都是准确的。 - 公证过程是针对 macOS Catalina (10.15) 及更新版本的安全机制。在 Catalina 之前的 macOS 版本上,公证状态可能不会被检查。
- 如果您发现有关公证的问题,确保您使用的是最新版本的 Xcode 和 macOS,并且您的 Apple Developer 账户是有效的。
通过上述步骤,您应该能够验证您的 .pkg
安装包是否已经成功签名和公证。
按照以上步骤,您可以确保您的 pkg 安装包被正确签名和公证,这样当用户下载并安装时,他们会看到它来自一个已知的开发者,并且包含的是被苹果系统信任的代码。
删除加载项
在macOS上删除Microsoft Word加载项(Add-ins),你可以按照以下步骤操作。这些步骤适用于通过Web添加的加载项(Web Add-ins),以及安装在系统上的加载项。请注意,具体步骤可能会根据你的Microsoft Office版本有所不同。
删除Web Add-ins:
-
打开Word:首先,打开Microsoft Word应用程序。
-
访问加载项管理:
- 对于较新的Office版本(如Office 365或Office 2019),点击
插入
菜单中的我的加载项
或获取加载项
。 - 在加载项窗口中,你通常可以看到已安装的加载项列表。
- 对于较新的Office版本(如Office 365或Office 2019),点击
-
删除加载项:
- 从列表中找到你想要删除的加载项。
- 可能会有一个小的设置图标、移除按钮或者是其他选项可以点击。点击这个选项,然后选择删除或移除加载项。
这些步骤通常用于管理通过Office Store或开发者给定的URL安装的Web Add-ins。
删除系统加载项:
如果加载项是作为软件包安装在你的系统上,那么删除它们可能需要手动从应用程序的文件夹中删除相关文件或使用卸载程序(如果提供)。
-
访问Word加载项文件夹:
-
加载项可能安装在如下路径之一:
css/Library/Application Support/Microsoft/Office/Word Add-Ins ~/Library/Application Support/Microsoft/Office/Word Add-Ins
-
这里的
/Library
是系统级别的库文件夹,而~/Library
是指当前用户的库文件夹。
-
-
删除加载项文件:
- 在文件夹中找到你想要删除的加载项相关文件。
- 将这些文件移动到废纸篓,或者右键点击它们并选择"移到废纸篓"。
-
重启Word:完成上述步骤后,重启Word以确保更改生效。
请注意,在删除任何文件之前,确保你知道它是做什么用的,以避免意外删除重要文件,可能需要备份这些文件。如果你不确定某个文件是否可以删除,最好是查找更多信息或咨询专业人士。
以上提供的方法适用于大多数情况,但详细步骤可能根据不同的Word版本和你的具体情况有所不同。如果加载项是由第三方软件提供,并且通过安装程序安装,则可能需要查阅该软件的文档来了解如何正确卸载。