WiX公共组件作为合并模块和注册表中的INSTALLDIR
我想有两个安装与共同的部分。所以我使用了合并模块,创建了两个wix安装程序 以下是我想通过更多细节实现的目标(这里描述的问题已经解决): 我使用WixUI\u InstallDir,所以用户可以选择安装应用程序的目录。 当第二个安装程序启动时,我想加载之前选择的安装目录 当用户不更改默认路径时,一切正常。但若在第一次安装中更改了INSTALLDIR,那个么第二个安装程序会将插件添加到正确的路径,但也会将核心提取到默认路径,这是错误的。 但是,“目标文件夹”对话框上会显示正确的路径(来自以前的安装) 下面是重要的代码:WiX公共组件作为合并模块和注册表中的INSTALLDIR,wix,windows-installer,Wix,Windows Installer,我想有两个安装与共同的部分。所以我使用了合并模块,创建了两个wix安装程序 以下是我想通过更多细节实现的目标(这里描述的问题已经解决): 我使用WixUI\u InstallDir,所以用户可以选择安装应用程序的目录。 当第二个安装程序启动时,我想加载之前选择的安装目录 当用户不更改默认路径时,一切正常。但若在第一次安装中更改了INSTALLDIR,那个么第二个安装程序会将插件添加到正确的路径,但也会将核心提取到默认路径,这是错误的。 但是,“目标文件夹”对话框上会显示正确的路径(来自以前的安装
<Property Id="CORE_INSTALLATION_PATH">
<RegistrySearch Id="InstallFolderRegistrySearch" Type="raw" Root="HKLM" Key="SOFTWARE\PluginCompany\Plugins" Name="InstallFolder"/>
</Property>
<SetDirectory Id="INSTALLDIR" Value="[CORE_INSTALLATION_PATH]">CORE_INSTALLATION_PATH</SetDirectory>
<DirectoryRef Id="TARGETDIR">
<Component Id="CoreRegistryEntries" Guid="{C1701385-12CA-47EF-9FB2-884139B56390}">
<RegistryKey Root="HKLM" Key="SOFTWARE\PluginCompany\Plugins" Action="createAndRemoveOnUninstall">
<RegistryValue Type="string" Name="InstallFolder" Value="[INSTALLDIR]" KeyPath="yes"/>
</RegistryKey>
</Component>
</DirectoryRef>
核心安装路径
您可以从以下几件事下载并运行完整的示例解决方案:
MSI (c) (38:CC) [08:54:03:324]: Dir (target): Key: INSTALLDIR , Object: C:\Program Files (x86)\PluginCompanyFolder\PluginInstaller2\
MSI (c) (38:CC) [08:54:03:324]: Dir (target): Key: INSTALLDIR.751E70EB_CF76_413B_B8C8_231A31F9C946 , Object: C:\Program Files (x86)\PluginCompanyFolder\PluginInstaller\
因此有两个属性INSTALLDIR和带有guid的INSTALLDIR。
第二个属性由合并模块添加,更新INSTALLDIR不会更改第二个属性。这就是第二个安装程序将核心组件提取到自定义位置的原因
要禁用Muduralization,我使用了SuppressModule属性:
<Property Id="INSTALLDIR" SuppressModularization="yes"/>
请注意,模块化描述位于:
用于禁止合并中此属性标识符的模块化
模块。强烈反对使用此功能;它应该
只有在极少数情况下,作为最后解决办法才有必要