用于每台机器安装的WiX条件桌面快捷方式



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

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

    <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="SoftwareMyTestShortcut"
          Name="DesktopShortcutInstalled"
          Type="integer"
          Value="1"
          KeyPath="yes" />
    </Component>

这确实有效,但因为它是每台机器安装的,如果由一个管理员用户安装并由另一个管理员删除,将导致孤立的注册表项。(如(WiX)每台机器安装的程序文件快捷方式中所述。)

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

    <ComponentGroup
       Id="CG_ProductComponents"
       Directory="INSTALLFOLDER">
          <Component
             Id="C_ReadMeFile"
             Guid="PUT_GUID_HERE">
             <File
                Id="FILE_ReadMeTxt"
                Source="..DocsReadMe.txt"
                KeyPath="yes">
            <Shortcut 
                Advertise="yes"
                Id="SH2_readme"
                Directory="DesktopFolder"
                Name="TestReadMe"
                WorkingDirectory="INSTALLDIR"
                Description="Test shortcut">
         </Shortcut>
     </File>
  </Component>

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

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

感谢

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

最新更新