是否有任何模板或指南可用于创建用于部署 Petrel 插件的 Windows Installer XML (WiX) 项目?
WiX 没有被选为旧 *.vdproj/MSI 推荐的自然继承者有什么原因吗?
有没有人尝试过用于 Petrel 插件的 WiX?我有兴趣交流想法和经验。我是 WiX 的新手,很难上手。
(题外话:“新”PIP 范式精简而简单,但不适合企业使用,客户希望能够重新打包 MSI 以通过例如组策略促进大规模部署。我将发布另一个这个问题。)
无论 MSI 生成方式如何(WiX 只是生成它们的另一种方式),Ocean/Petrel 仍然支持 MSI 部署。
在 Ocean/Petrel 2012.1 中,您需要分别在安装和卸载步骤中定义自定义动作调用命令行工具和PluginManager.exe
切换。自定义操作是使用WiX 中的标签定义的。从 MSI 自定义操作调用时,您需要记住两个技巧:/install
/uninstall
<CustomAction>
PluginManager.exe
您需要在/installerId:your_installer_id
安装期间在命令行开关中提供您的 MSI 安装程序 ID(通常是 GUID)。这将在卸载 Petrel 时启用插件的自动 MSI 卸载
您需要在卸载过程中PluginManager.exe
使用/runFromInstaller
switch 运行。通过这样做,您可以让 PluginManager 知道您从 MSI 安装程序运行它,因此无需再次运行 MSI 卸载
您可以在 Ocean.chm 中的插件身份和部署白皮书中找到这些和其他提示和技巧以及完整的 PluginManager.exe 命令行规范(“如何在 MSI 安装程序中使用 PluginManager.exe”部分)。
Petrel 2013 的重要信息:
我们有可以使用 MSI 安装或卸载的插件,这些插件是用 Wix 创建的。PluginManager.exe
在不使用参数的情况下安装 PIP 时,使用/installerId:<msi_installer_id>
Petrel 卸载插件会物理删除所有文件,但会在 Windows 卸载程序插件中产生不一致。如果我们使用参数/installerId:<msi_installer_id>
使用 Petrel 卸载插件,则只会在逻辑上删除插件,将其物理保存在其原始目录中。这允许它随后也由 Petrel 安装。在后一种情况下,没有不一致,因为windows卸载插件并能够删除所有文件。
问题是使用 Petrel 2013 卸载插件并没有调用它的 MSI 卸载程序。不应该吗?这看起来像一个错误。