【发布时间】: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