installation - 从命令行传递的 WiX 条件属性不起作用?

标签 installation wix conditional wix3 shortcuts

我有一个关于是否安装需要通过命令行参数传递的快捷方式的属性。当我在 wxs 文件中设置属性时,这些条件似乎有效,但在通过命令行设置它们时,它们似乎被忽略了。从日志中我看到它们正在被设置:

MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLSTARTUPSHORTCUT property. Its current value is '0'. Its new value: '1'.
MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLSTARTMENUSHORTCUT property. Its current value is '0'. Its new value: '1'.
MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLDESKTOPSHORTCUT property. Its current value is '0'. Its new value: '1'.

但是,他们没有安装快捷方式。

此外,似乎由于它们需要在自己的组件中才能对它们设置条件,因此它们不能再被宣传为快捷方式。您将如何获得有条件安装的广告快捷方式?

当前快捷方式代码:
<Property Id="INSTALLSTARTMENUSHORTCUT" Value="0"/>
...
<Component Id="StartMenuShortcut" Guid="MY-GUID">
  <Condition>INSTALLSTARTMENUSHORTCUT</Condition>
  <Shortcut Id="StartMenuServerShortcut"
    Directory="ProgramMenuDir"
    Name="Application Name" WorkingDirectory="INSTALLDIR" Advertise="no"
    Target="[!FileEXE]"
    Icon="Icon.ico" />
</Component>

并重复其他快捷方式

编辑:

尝试 Sacha 建议并添加以下内容:
<Property Id="INSTALLSTARTUPSHORTCUT" Value="0" Secure="yes"/>
<Property Id="INSTALLDESKTOPSHORTCUT" Value="0" Secure="yes"/>
<Property Id="INSTALLSTARTMENUSHORTCUT" Value="0" Secure="yes"/>

现在它会安装所有的快捷方式,即使它们在 xml 和命令行中都设置为 0。我传递的命令行是:
msiexec /i MySetup.msi INSTALLSTARTUPSHORTCUT=0 INSTALLDESKTOPSHORTCUT=0 INSTALLSTARTMENUSHORTCUT=0 /l*v inst.log /qb

尝试将值放在引号中,但仍然没有通过。此处未显示,但我通过执行 ALLUSERS=""或 ALLUSERS="2"成功地操纵 ALLUSERS 属性以执行每个用户或每台机器的注册表 所以传递属性应该是可能的,但我不确定是什么我做错了。

最佳答案

两件事,因为这里有两个问题:

  • 广告快捷方式必须位于安装它们指向的文件的同一组件中。这是必需的,因为 Windows 安装程序在组件的 KeyPath 处指向一个通告的快捷方式。因此,如果您希望有选择地安装它们,则不能使用宣传的快捷方式。

  • 我有一个 blog post about how to create a shorcut and pass validation
  • 您正在使用的属性需要标记为安全才能从安装 UI 过程传递到服务器端。要做到这一点就做


  • 请注意,我没有添加 Value 属性。如果您指定一个值,即使它是 0,那么您的 INSTALLSTARTMENUSHORCUT 将评估为 TRUE。空白/未定义的属性为 FALSE,任何其他值为 TRUE。

    关于installation - 从命令行传递的 WiX 条件属性不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/858923/

    相关文章:

    Wix Burn Bundle - 必须是管理员

    php - 检查多个值是全部为假还是全部为真

    ruby-on-rails - 是否可以在模型中创建条件关联?

    android - 获取已安装的安卓应用程序列表

    java - 在 MacOS 上安装 clojure

    wix - MSI 安装顺序 - 在服务启动前运行数据库脚本

    windows - 使用 Visual Studio 集成的 WiX 托管自定义操作中没有调试信息

    c# - 具有 3 个值的异或

    python - PyCharm 未找到 Anaconda Python,给出 "can' t 打开文件 'python' : [Errno 2] No such file or directory?“

    c - 如何为我的 C 安装新单元(我的意思是包括 ex : stdio. h)