我有以下情况。
我的产品将二进制文件安装在c:\Program Files (x86)\MyCompany\MyApp\
内,并将快捷方式安装在C:\ProgramData\Microsoft\Windows\Start Menu\Programs\MyCompany
下。
我使用以下示例创建了msi:https://helgeklein.com/blog/2014/09/real-world-example-wix-msi-application-installer/
我刚刚添加了以下代码
<!-- ApplicationShortcut-->
<Directory Id="ProgramMenuFolder">
<Directory Id="ApplicationProgramsFolder" Name="!(loc.ManufacturerName)">
<Component Id="ApplicationShortcut" Guid="F4B7EAFA-FF19-41B4-8267-3AEFC12235A7">
<Shortcut Id="ApplicationStartMenuShortcut"
Name="!(loc.ApplicationName)"
Description="!(loc.ProductDescription)"
Target="[INSTALLDIR]MyApp.exe"
WorkingDirectory="INSTALLDIR"
/>
<RemoveFolder Id="RemoveApplicationProgramsFolder" Directory="ApplicationProgramsFolder" On="uninstall"/>
<RegistryValue Root="HKCU" Key="Software\!(loc.ManufacturerName)\!(loc.ApplicationName)" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
</Component>
</Directory>
</Directory>
问题出在以下
Pin to taskbar, this will create a shortcut in
C:\ Users \\ AppData \ Roaming \ Microsoft \ Internet Explorer \ Quick Launch \ User Pinned \ TaskBar` C:\Users\<user>\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar
中的快捷方式丢失了是否可以在更新期间维护任务栏快捷方式?
答案 0 :(得分:0)
我在这里找到了答案:https://stackoverflow.com/a/33402698/98491
<InstallExecuteSequence>
<RemoveShortcuts>Installed AND NOT UPGRADINGPRODUCTCODE</RemoveShortcuts>
</InstallExecuteSequence>
这可以防止在更新过程中卸载快捷方式。
如评论中所述,缺点是卸载后仍保留TaskBarShortCut,但这是用户可能期望的。不必在每次更新软件时都重新创建固定的任务栏快捷方式。