可能重复:
Wix - change the installation folder based on privilege
当我试图在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
有人知道这样做吗?
答案 0 :(得分:6)
好的,刚刚结束。我的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"
,因为这会在注册表搜索后立即执行操作。
答案 1 :(得分:3)
许多WiX元素都将条件作为内部文本。由于它是XML,因此您经常需要转义特殊字符。这是指向条件如何工作的指针:
另外,我不确定为什么你有INSTALLDIR1和INSTALLDIR2。没有看到你的其余代码,我不得不说你没有正确地去做。您应该有一个INSTALLDIR,然后根据每个用户或每台机器将其设置到不同的位置。这是一篇关于这个主题的好博客文章:
Authoring a single package for Per-User or Per-Machine Installation context in Windows 7
就个人而言,我很少为每个用户安装而烦恼。除了“病毒”(不是病毒,而是通过社交媒体向非私人用户传播)应用程序之外,它们是一种毫无价值的痛苦。