如果不是默认设置,WIX不会删除INSTALLDIR中的快捷方式

如果不是默认设置,WIX不会删除INSTALLDIR中的快捷方式,wix,shortcut,uninstallation,Wix,Shortcut,Uninstallation,如果未使用默认安装目录,为什么WIX不删除INSTALLDIR中的快捷方式?我的WIX代码看起来像什么 <DirectoryRef Id="INSTALLDIR"> <Component Guid="..." Id="shortcuts_INSTALLDIR"> <RegistryKey ForceDeleteOnUninstall="yes" Id="shortcuts_reg_INSTALLDIR" Key="Software\MyCompany\M

如果未使用默认安装目录,为什么WIX不删除INSTALLDIR中的快捷方式?我的WIX代码看起来像什么

<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 Installer在这里有点古怪。它不记录它执行的操作;相反,它试图记录必要的信息来逆转它们。在这种情况下,您似乎在该实现中陷入了一个缺口

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


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

是否将任何文件安装到INSTALLDIR中?否,只有子目录中的文件。