我正在开发一个安装程序,其中包含一些在以下 MSI 属性中查找值的自定义操作:
- 添加本地
- 添加默认
- 重新安装
- 消除
使用完整 UI 运行安装程序时,这些属性包含逗号分隔的功能名称列表(根据用户选择的选项而定)。但是,当我以被动模式运行安装程序或从命令行仅使用基本 UI(或没有 UI)时,我发现属性为空/空白。只有当我从命令行显式设置它们时,它们才具有任何价值。这是一个可以接受的解决方法,但如果这些可以采用某种默认值(例如“all”)而不需要在命令行上传递值,那就更好了。有什么方法可以在 WiX(我用来构建 MSI)中指定它,还是我必须在自定义操作代码中做一些事情(或完全其他事情)?
我在这里查看了属性参考,但我没有看到任何关于如何为这些属性指定默认功能的提及。
我还发现有趣的是,如果我在安装过程中以这种方式在命令行上指定一个功能,它似乎存储在 REMOVE 属性中以供卸载(换句话说,我在卸载时不必传递任何参数)模式)。这是我可以依赖的功能吗?如果以后有人修改安装,它会自动更新吗?
我正在运行 WiX 3.5.2519 并将 Visual Studio 2010 与 Visual C++ 一起用于自定义操作代码。感谢你给与我的帮助!
编辑:
其实,我错了。在其中一种模式下卸载和运行时,即使我在命令行上传递了不同的值或只安装了一部分功能,REMOVE 属性似乎总是设置为“全部”。这似乎坏了。我在这里做错了吗?
C:\> msiexec REMOVE=FeatureName /passive /l* uninstall.log /x Product.msi
它将完全忽略我为“FeatureName”指定的内容,并在其位置使用“all”。