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的新值。任何想法?

+0

您是否将任何文件安装到INSTALLDIR? –

+0

不,只有子目录中的文件。 – Horcrux7

Windows安装程序在这里有点怪异的野兽。它不记录它执行的操作;而是试图记录逆转它们所需的信息。在这种情况下,似乎你陷入了这个实现中的一个缺口。

Windows Installer注意到它已安装组件shortcuts_INSTALLDIR。当文件安装到特定的目录时,它会记录目录的位置。然后在维护期间恢复它记录的所有目录。但它不记录(因此不会恢复)该目录只是一个快捷方式。快捷方式通常安装在ProgramMenuFolder下的预定义路径中。由于这些位置不受INSTALLDIR更改的影响,通常这不是问题。

要解决此问题,您必须确保在维护期间恢复备用INSTALLDIR。您可以通过直接向INSTALLDIR安装任何文件(如果额外的文件不是问题,这是我的首选选项),可以说服Windows Installer自动执行此操作。或者,您可以通过记忆属性模式手动执行此操作,可能会利用ARPINSTALLLOCATION及其卸载键中保存的值。