6

可能重复:
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

有人知道这样做吗?

4

2 回答 2

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"因为这将使操作在注册表搜索后立即执行。

于 2012-08-14T10:02:40.713 回答
3

许多 WiX 元素将条件作为内部文本。由于它是 XML,因此您经常需要转义特殊字符。以下是条件如何工作的指针:

条件语句语法

另外,我不确定你为什么有 INSTALLDIR1 和 INSTALLDIR2。如果没有看到你的其余代码,我不得不说你没有正确地处理它。您应该有一个 INSTALLDIR,然后根据每个用户或每台机器将其设置到不同的位置。这是一篇关于这个主题的好博客文章:

在 Windows 7 中为每用户或每机器安装上下文创作单个包

就个人而言,我很少为每用户安装而烦恼。除了“病毒”(不是病毒,而是通过社交媒体传播给非 priv 用户)应用程序之外,它们几乎没有价值。

于 2012-08-14T11:21:11.743 回答