'Add/Remove Programs'列表是如何构建的?



我有一个 Wix 捆绑引导程序安装 2 个 MSI 文件。如果我使用引导程序,"添加/删除程序"列表仅包含 boostrapper 的条目。

如果我单独使用 MSI 文件,我会在此列表中获得两个单独的条目,每个 MSI 文件一个。

如何构建控制面板中"添加/删除程序"列表中的条目的官方记录方式是什么?

具体来说,他们告诉我们——

使用 Windows 安装程序配置添加/删除程序

通过在应用程序的 Windows 安装程序包中设置某些安装程序属性的值,可以提供在控制面板中配置"添加/删除程序"所需的所有信息。设置这些属性会自动将相应的值写入注册表。(...)

他们还告诉我们

卸载注册表项

以下安装程序属性提供在注册表项下写入的值:

HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionUninstall

这些值存储在由应用程序的产品代码 GUID 标识的子项中。

但是,此处有一个条目是否足够,以及需要哪些子项或值条目并不明显。

老实说,我不太确定确切的问题是什么 - 但我会试一试。WiX刻录功能将通过禁止单个MSI文件显示在添加/删除列表中来创建Add / Remove单个条目。

在后台,这是通过在安装过程中将 ARPSYSTEMCOMPONENT 属性设置为等于1来完成的(或者它们通过一些我不熟悉的技术不同但功能等效的方式实现相同的效果)。

您可以在安装过程中自行设置此属性(指定为msiexec.exe的参数),以从Add / Remove列表中隐藏任何 MSI。从技术上讲,它将转换为DWORD注册表值,SystemComponent = 1写入 MSI 的卸载注册表项(根据安装类型和 MSI 体系结构,有几种不同的注册表值):

  • 64 位HKLMSOFTWAREMicrosoftWindowsCurrentVersionUninstall{ProductCode}
  • 32 位HKLMSOFTWAREWOW6432NodeMicrosoftWindowsCurrentVersionUninstall{ProductCode}
  • 每用户HKCUSoftwareMicrosoftWindowsCurrentVersionUninstall{ProductCode}

您可以选择在"添加/删除"列表中显示使用"刻录"安装的所有 MSI 文件。您只需将Visible attribute设置为 yes:

<MsiPackage SourceFile="MyMsi.msi" Visible="yes" />

这只是MsiPackage element- 您显然需要将其插入到带有ChainBundleWix元素的适当刻录源文件中。下面是一个较大的示例。这是自定义的示例 WiX 刻录 GUI.我还将提供指向WiX教程的链接,关于引导。

请注意,我认为除了单个 MSI 软件包/EXE 软件包之外,Add / Remove中的刻录条目可能始终可见。可能也有一种方法可以自定义我不熟悉的。

最新更新