Wix 基于用户选择的条件注册表写入

标签 wix windows-installer

我使用 WiX 3.9 和 WixUI_Advanced 对话框来创建 Windows 安装程序。用户可以选择在本地或每台计算机(所有用户)安装应用程序。为此,我使用 WixPerUserFolder 属性。

<Publish Dialog="InstallScopeDlg" Control="Next" Property="WixAppFolder" Value="WixPerUserFolder" Order="1">!(wix.WixUISupportPerUser) AND NOT Privileged</Publish>

<Publish Dialog="InstallScopeDlg" Control="Next" Property="MSIINSTALLPERUSER" Value="1" Order="8">WixAppFolder = "WixPerUserFolder"</Publish>

<Publish Dialog="InstallScopeDlg" Control="Next" Property="MSIINSTALLPERUSER" Value="{}" Order="9">WixAppFolder = "WixPerMachineFolder"</Publish>

<Publish Dialog="InstallScopeDlg" Control="Next" Property="ALLUSERS" Value="{}" Order="3">WixAppFolder = "WixPerUserFolder"</Publish>

<Publish Dialog="InstallScopeDlg" Control="Next" Property="ALLUSERS" Value="1" Order="2">WixAppFolder = "WixPerMachineFolder"</Publish>

<Publish Dialog="InstallScopeDlg" Control="Next" Property="APPLICATIONFOLDER" Value="[WixPerUserFolder]" Order="4">WixAppFolder = "WixPerUserFolder"</Publish>

<Publish Dialog="InstallScopeDlg" Control="Next" Property="APPLICATIONFOLDER" Value="[WixPerMachineFolder]" Order="5">WixAppFolder = "WixPerMachineFolder"</Publish>

根据用户选择(WixPerUserFolder 或 WixPerMachineFolder),我还希望能够选择注册表项:HKCU 或 HKLM。

如果用户选择本地安装,则:

<RegistryKey Root="HKCU" Key="$(var.RegKey)" ForceDeleteOnUninstall="yes" ForceCreateOnInstall="yes">
         <RegistryValue Type="string" Value="" KeyPath="yes" />
         <RegistryValue Type="string" Name="InstallDir" Value="[INSTALLDIR]"/>
</RegistryKey>

否则:

<RegistryKey Root="HKLM" Key="$(var.RegKey)" ForceDeleteOnUninstall="yes" ForceCreateOnInstall="yes">
    <RegistryValue Type="string" Value="" KeyPath="yes" />
        <RegistryValue Type="string" Name="InstallDir" Value="[INSTALLDIR]"/>
</RegistryKey>

最佳答案

Root="HKMU" 将根据包是按用户运行还是按计算机运行来选择正确的配置单元。

关于Wix 基于用户选择的条件注册表写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40396234/

相关文章:

wix - 组件之间的自定义操作

windows-installer - 无法获取组件中的安装程序类型。 --> 无法加载一种或多种请求的类型

wix - 在哪里可以找到 Microsoft.Tools.WindowsInstallerXml.dll?

c# - 将外部 DLL 添加到 WIX 项目

WIX 3.8 安装程序 : Add files to a pre-existing folder

wix - 无法使用 WiX 安装程序创建注册表项值

installation - Wix 本地设置\应用程序数据快捷方式

windows - 错误 1334。在 Data1.cab 中找不到文件

msbuild - 我应该让热量产生 guids 吗?在编译期间尝试自动生成时出错,因为我没有使用标准目录

windows-vista - 为什么在安装 4.5 时 WiX 检测到 Windows Installer 4.05?