我不能确切地告诉你的特点和安装相同的设置意味着两倍,但:
不能安装相同的MSI安装程序的两倍。它已经安装(ProductCode),因此它将进入维护/修复模式。这可能会进行修复/重新安装,或者如果您已经为功能维护创作了它,那么Windows将再次注意到该产品已经安装,但提供了标准功能对话框,允许您从设置中添加功能,而后一种模式是正是你得到的,如果你去程序01功能并选择更改。换言之,真正的功能维护设置主要通过程序&功能提供功能选择对话框,在添加两个功能的场景中,您只需使用程序&功能中的更改,而不是尝试重新安装相同的设置。
你的文章引用了Components和RemoveFile,你绝对不需要做任何这些。如果您没有使用真正的Windows Installer功能,并且已经构建了基于组件的安装程序,其中组件安装基于条件,那么这将解释您所看到的内容。用于您的条件的属性值不会保留,因此当您尝试再次安装相同的安装程序时,它将进入当前安装的产品的维护重新安装模式,属性值为空,条件为false,因此将删除这些组件。尽管如此,你还没有发布你的WiX,并且你试图安装两次相同的设置的事实意味着你可能不熟悉维护,特性和组件。总而言之,您似乎应该使用WixUI_FeatureTree对话框集合,将您的组件分组到特性中以实现您要查找的内容。
如果您的目标是替换需要更新的文件,那么您应该查看WiX MajorUpgrade元素。如果将MigrateFeatures设置为yes,则升级后将导致仍然会安装相同的功能。安排afterInstallExecute可能是你想要的。增加要更新的文件的文件版本,使用新的ProductCode,在前三个字段中增加ProductVersion并使用相同的UpgradeCode。或者你可以看看创建一个补丁,一个msp文件。
一旦我安装产品,我不想去维护模式。相反,总是应该首次安装。正如你所说的,我正在使用“SelectionTree”控件对组件进行分组。 <功能Id =“SecondFeature”Title =“Second Feature”Level =“1”> ” –
无法完成 - 您不知道Windows Installer的工作方式。 ProductCode已被安装,并且再次运行相同的ProductCode设置将不会安装,就好像它是第一次安装一样。也许您应该查看MajorUpgrade元素并迁移功能状态。 – PhilDW
您是正确的PhilDW。我们想要实现这一点,我使用*在ProdcutCode中我打算在AppSearch期间从注册表中删除ProductCode(如果已安装)通过搜索产品名称ady。所以它会一直喜欢第一次安装。我删除了维护对话框并添加了CDATA(未安装或安装或修补程序)以显示我的所有对话框。因此,在相同版本的第一/二/三次安装中,将显示相同的对话框并执行所有已定义的自定义操作。 –