WIX不删除INSTALLDIR中的快捷方式(如果不是默认值)
问题描述:
为什么WIX不会在INSTALLDIR中删除快捷方式(如果它不是使用默认的安装目录)?我的WIX代码看起来像?WIX不删除INSTALLDIR中的快捷方式(如果不是默认值)
<DirectoryRef Id="INSTALLDIR">
<Component Guid="..." Id="shortcuts_INSTALLDIR">
<RegistryKey ForceDeleteOnUninstall="yes" Id="shortcuts_reg_INSTALLDIR" Key="Software\MyCompany\MyProduct" Root="HKCU">
<RegistryValue KeyPath="yes" Name="shortcut_INSTALLDIR" Type="string" Value=""/>
</RegistryKey>
<Shortcut Arguments="my args " Description="my description" Id="InstallDir_my_name" Name="my name" Target="[INSTALLDIR]mydir\my.exe" WorkingDirectory="INSTALLDIR"/>
</Component>
</DirectoryRef>
看起来像卸载程序不知道INSTALLDIR的新值。任何想法?
答
Windows安装程序在这里有点怪异的野兽。它不记录它执行的操作;而是试图记录逆转它们所需的信息。在这种情况下,似乎你陷入了这个实现中的一个缺口。
Windows Installer注意到它已安装组件shortcuts_INSTALLDIR。当文件安装到特定的目录时,它会记录目录的位置。然后在维护期间恢复它记录的所有目录。但它不记录(因此不会恢复)该目录只是一个快捷方式。快捷方式通常安装在ProgramMenuFolder下的预定义路径中。由于这些位置不受INSTALLDIR更改的影响,通常这不是问题。
要解决此问题,您必须确保在维护期间恢复备用INSTALLDIR。您可以通过直接向INSTALLDIR安装任何文件(如果额外的文件不是问题,这是我的首选选项),可以说服Windows Installer自动执行此操作。或者,您可以通过记忆属性模式手动执行此操作,可能会利用ARPINSTALLLOCATION及其卸载键中保存的值。
您是否将任何文件安装到INSTALLDIR? –
不,只有子目录中的文件。 – Horcrux7