如果不是默认的,WIX 不会删除 INSTALLDIR 中的快捷方式
WIX does not remove shortcuts in the INSTALLDIR if not default
如果不是使用默认安装目录,为什么 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 安装程序在这里有点奇怪。它不记录它执行的操作;相反,它会尝试记录反转它们所需的信息。在这种情况下,您似乎在该实施中陷入了困境。
Windows 安装程序注意到它已安装组件 shortcuts_INSTALLDIR。当文件安装到特定目录时,它会记录目录的位置。然后在维护期间恢复它记录的所有目录。但它不记录(因此不恢复)只是一个快捷方式的目录。通常快捷方式安装到 ProgramMenuFolder 下的预定义路径。由于此类位置不受 INSTALLDIR 更改的影响,因此这通常不是问题。
要解决此问题,您必须确保在维护期间恢复备用 INSTALLDIR。您可以说服 Windows 安装程序通过将任何文件直接安装到 INSTALLDIR 来自动执行此操作(如果额外文件不是问题,这是我的首选选项)。或者,您可以通过记住 属性 模式手动执行此操作,可能利用 ARPINSTALLLOCATION 及其在卸载键中保存的值。
如果不是使用默认安装目录,为什么 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 安装程序在这里有点奇怪。它不记录它执行的操作;相反,它会尝试记录反转它们所需的信息。在这种情况下,您似乎在该实施中陷入了困境。
Windows 安装程序注意到它已安装组件 shortcuts_INSTALLDIR。当文件安装到特定目录时,它会记录目录的位置。然后在维护期间恢复它记录的所有目录。但它不记录(因此不恢复)只是一个快捷方式的目录。通常快捷方式安装到 ProgramMenuFolder 下的预定义路径。由于此类位置不受 INSTALLDIR 更改的影响,因此这通常不是问题。
要解决此问题,您必须确保在维护期间恢复备用 INSTALLDIR。您可以说服 Windows 安装程序通过将任何文件直接安装到 INSTALLDIR 来自动执行此操作(如果额外文件不是问题,这是我的首选选项)。或者,您可以通过记住 属性 模式手动执行此操作,可能利用 ARPINSTALLLOCATION 及其在卸载键中保存的值。