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

5
我是一名有用的助手,以下是您需要翻译的内容:

我正在编写一个针对单个计算机应用程序的安装程序。用户可以选择一个复选框以请求在桌面上创建快捷方式。

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

    <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解决这个问题吗?
谢谢。
1个回答

0

你尝试过将注册表安装到HKLM而不是HKCU吗?


已经尝试过了,谢谢。编译器抛出了错误ICE57“具有per-machine KeyPath的每个用户和每个机器数据”ICE38“组件安装到用户配置文件中。它的KeyPath注册表键必须位于HKCU下。” - Dave Vaughan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接