可能重复:
Wix - 根据权限更改安装文件夹
好吧,当我试图解决我的问题时,这个问题出现了How do I get different registry keys for allusers and single user。
基本上我想做的是:
if ALLUSERS=1 then
set InstallDir to Property1
else
set InstallDir to Property2
有人知道这样做吗?
可能重复:
Wix - 根据权限更改安装文件夹
好吧,当我试图解决我的问题时,这个问题出现了How do I get different registry keys for allusers and single user。
基本上我想做的是:
if ALLUSERS=1 then
set InstallDir to Property1
else
set InstallDir to Property2
有人知道这样做吗?
好的,刚做完。我的 wxs 看起来像:
<CustomAction Id="PerUserInstall" Property="InstallDir" Value="[INSTALLDIR1]" Execute="immediate" />
<CustomAction Id="PerMachineInstall" Property="InstallDir" Value="[INSTALLDIR2]" Execute="immediate" />
<InstallExecuteSequence>
<Custom Action="PerUserInstall" After="AppSearch">ALLUSERS="" OR (ALLUSERS=2 AND (NOT Privileged))</Custom>
<Custom Action="PerMachineInstall" After="AppSearch">ALLUSERS=1 OR (ALLUSERS=2 AND Privileged)</Custom>
</InstallExecuteSequence>
感谢@shambulator 提供链接。请注意,我使用After="AppSearch"
而不是Before="CostFinalize"
因为这将使操作在注册表搜索后立即执行。
许多 WiX 元素将条件作为内部文本。由于它是 XML,因此您经常需要转义特殊字符。以下是条件如何工作的指针:
另外,我不确定你为什么有 INSTALLDIR1 和 INSTALLDIR2。如果没有看到你的其余代码,我不得不说你没有正确地处理它。您应该有一个 INSTALLDIR,然后根据每个用户或每台机器将其设置到不同的位置。这是一篇关于这个主题的好博客文章:
在 Windows 7 中为每用户或每机器安装上下文创作单个包
就个人而言,我很少为每用户安装而烦恼。除了“病毒”(不是病毒,而是通过社交媒体传播给非 priv 用户)应用程序之外,它们几乎没有价值。