【问题标题】:Setting ALLUSERS in WiX for per-user or per-machine installation context在 WiX 中为每用户或每机器安装上下文设置 ALLUSERS
【发布时间】:2011-03-23 21:02:01
【问题描述】:

我使用 WiX 3.5。我的安装程序应该启用每用户和每机器安装。我想通过使用单选按钮(“Everyone”和“Just me”)来实现这一点。

我在网上找到了一些参考资料:

如果我理解正确,我的安装程序应该将 ALLUSERS 属性设置为 1 以进行每台机器安装,并将“”(空字符串)设置为每用户安装。

我的问题是无论我尝试什么,ALLUSERS 总是设置为 1。即使我根本没有设置它!

这是我尝试过的几件事:

<Control Id="UserSelection"
         Type="RadioButtonGroup"
         X="26"
         Y="115"
         Width="305"
         Height="45"
         Property="ASSISTANCE_USERS"
         Text="ASSISTANCE_USERS">
    <RadioButtonGroup Property="ASSISTANCE_USERS">
        <RadioButton Value="cur"
                     X="0"
                     Y="0"
                     Width="295"
                     Height="16"
                     Text="Just me" />
        <RadioButton Value="all"
                     X="0"
                     Y="20"
                     Width="295"
                     Height="16"
                     Text="Everyone" />
    </RadioButtonGroup>
</Control>

然后根据 ASSISTANCE_USERS 设置 ALLUSERS:

  <Publish Property="ALLUSERS"
           Value="{}">ASSISTANCE_USERS = "cur"</Publish> <!-- set null value -->
  <Publish Property="ALLUSERS"
           Value="1">ASSISTANCE_USERS = "all"</Publish>

但是,ALLUSERS 始终为 1。

我也尝试将 ALLUSERS 设置为空字符串:

<Property Id="ALLUSERS" Secure="yes"/>

这应该将 ALLUSERS 设置为“”,但仍保持为“1”

一旦我能够设置 ALLUSERS,我应该能够使用 HKMU 进行每用户和每台机器的安装。

【问题讨论】:

    标签: wix windows-installer


    【解决方案1】:

    检查详细日志(使用 /l*vx):MSI 记录每个属性更改,以便您查看何时设置 ALLUSERS。

    【讨论】:

    • 嗨,鲍勃,这正是我所做的。日志中只有一行:Property(C): ALLUSERS = 1
    • 然后在 .msi 的属性表中设置 ALLUSERS。你在使用 Package/@InstallScope 吗?
    • 我只是看看你blog。我没有使用 Package/@InstallScope。当我尝试 InstallScope="perUser" 时,我仍然得到 ALLUSER=1。文档说设置 InstallScope="perMachine" 将 ALLUSER 设置为 1。 InstallScope="perUser" 是否应该将 ALLUSER 设置为 ""?还有什么可以将 ALLUSERS 设置为 1?
    • WiX 中没有其他内容可以设置 ALLUSERS。如果您使用任何第三方库或合并模块,它们很可能是来源。
    • 谢谢@Bob!是的,我使用合并模块来包含 VC Redistributables。 &lt;Merge Id='VS80_CRT' SourceFile='c:\Program Files\Common Files\Merge Modules\microsoft_vc80_crt_x86.msm' Language='0'DiskId='1' /&gt;。此合并模块将 ALLUSERS 设置为 1。我还使用 [merlinia.com/mdt/WiXTutorial2.msl] 中的方法成功地将 ALLUSERS 更改为“”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多