【问题标题】:WiX Conditional Desktop Shortcut for Per-Machine Install用于每台机器安装的 WiX 条件桌面快捷方式
【发布时间】:2015-12-07 18:38:53
【问题描述】:

我正在为每台机器的应用程序编写安装程序。有一个复选框供用户请求桌面快捷方式。

我第一次尝试使用带有条件语句的组件来创建快捷方式 - 看起来像:-

    <Component
       Id="C_desktopShortcut"
       Guid="PUT_GUID_HERE">

       <Condition>INSTALLDESKTOPSHORTCUT</Condition>

       <Shortcut
          Id="S_DT_ReadMe"
          Name="ReadMe.txt"
          Description="ReadMe shortcut"
          Target="[INSTALLFOLDER]ReadMe.txt" />

       <RegistryValue
          Root="HKCU"
          Key="Software\MyTest\Shortcut"
          Name="DesktopShortcutInstalled"
          Type="integer"
          Value="1"
          KeyPath="yes" />
    </Component>

这确实有效,但是因为它是按机器安装的,所以如果由一个管理员用户安装并被另一个管理员用户删除,则会导致注册表项孤立。 (如(WiX) Program files shortcut for per-machine install 中所述。)

然后我重新编写代码以在加载主可执行文件的同一组件中创建一个快捷方式,例如:-

    <ComponentGroup
       Id="CG_ProductComponents"
       Directory="INSTALLFOLDER">
          <Component
             Id="C_ReadMeFile"
             Guid="PUT_GUID_HERE">
             <File
                Id="FILE_ReadMeTxt"
                Source="..\Docs\ReadMe.txt"
                KeyPath="yes">

            <Shortcut 
                Advertise="yes"
                Id="SH2_readme"
                Directory="DesktopFolder"
                Name="TestReadMe"
                WorkingDirectory="INSTALLDIR"
                Description="Test shortcut">
         </Shortcut>
     </File>
  </Component>

但是,使用这种方法,我找不到添加条件来控制是否安装快捷方式的方法。

尽管进行了广泛的搜索,但我一直无法找到一种允许条件桌面快捷方式但又避免孤立注册表项的缺陷的技术。
请有人告诉我应该如何用 WiX 解决这个问题。

谢谢

【问题讨论】:

    标签: wix desktop desktop-shortcut


    【解决方案1】:

    您是否尝试将注册表安装到 HKLM 而不是 HKCU。

    【讨论】:

    • 已经试过了,谢谢。编译器会抛出错误 ICE57“每个用户和每个机器的数据都带有每个机器的 KeyPath”ICE38“组件安装到用户配置文件。它的 KeyPath 注册表项必须属于 HKCU。”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    相关资源
    最近更新 更多