这不是一个问题,而是一个答案。
问题的一部分在这里可用:如何为所有用户安装程序快捷方式?
引用:
“...如何让安装程序在所有用户配置文件下创建快捷方式,以便机器上的每个人都有快捷方式?”
另一个 - 这里:Wix为所有用户/每台机器创建非广告快捷方式
引用:
“......在教程中我看到使用注册表值作为快捷方式的键路径。问题是他们使用HKCU作为根...... 。”
创建卸载快捷方式的主要困难。
该解决方案基于 Rob Menching 的博客文章如何创建卸载快捷方式(并通过所有 ICE 验证)。
<!-- Script from Rob Menching's blog post -->
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="PUT-GUID-HERE"
UpgradeCode="PUT-GUID-HERE"
Name="TestUinstallShortcut"
Language="1033"
Version="1.0.0"
Manufacturer="Microsoft Corporation">
<Package InstallerVersion="200"
Compressed="yes"
InstallScope="perMachine" />
<Media Id="1" />
<Directory Id="TARGETDIR"
Name="SourceDir">
<Directory Id="ProgramMenuFolder">
<Directory Id="ShortcutFolder"
Name="My Application">
<Component Id="UninstallShortcutComponent"
Guid="PUT-GUID-HERE">
<RegistryKey Root="HKCU"
Key="Software\[UpgradeCode]">
<RegistryValue Value="RobMen Was Here."
Type="string"
KeyPath="yes" />
</RegistryKey>
<Shortcut Id="UninstallProduct"
Name="Uninstall My Application"
Target="[System64Folder]msiexec.exe"
Arguments="/x [ProductCode]"
Directory="ShortcutFolder"
Description="Uninstalls My Application" />
<RemoveFolder Id="RemoveShorcutFolder"
On="uninstall" />
</Component>
</Directory>
</Directory>
</Directory>
<Feature Id="TestUninstallShortcut"
Title="Test Uninstall Shortcut Feature"
Level="1">
<ComponentRef Id="UninstallShortcutComponent" />
</Feature>
<CustomAction Id="LaunchApp"
Directory="TARGETDIR"
ExeCommand="[System64Folder]reg.exe Delete HKCU\Software\[UpgradeCode] /f" />
<InstallExecuteSequence>
<Custom Action="LaunchApp"
After="InstallFinalize">(NOT Installed) OR UPGRADINGPRODUCTCODE</Custom>
</InstallExecuteSequence>
</Product>
</Wix>
在此示例中:
在“Package”项中添加InstallScope ="perMachine"
了将注册表项更改为"Software\[UpgradeCode]"
添加了 CustomActionLaunchApp
以删除不需要的注册表项。
在 WinXP 32 位和 Win7 64 位上测试。