【问题标题】:WIX does not remove shortcuts in the INSTALLDIR if not default如果不是默认设置,WIX 不会删除 INSTALLDIR 中的快捷方式
【发布时间】:2016-09-20 05:23:42
【问题描述】:

如果不是使用默认安装目录,为什么 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 的新值。有什么想法吗?

【问题讨论】:

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

标签: wix shortcut uninstallation


【解决方案1】:

Windows 安装程序在这里有点奇怪。它不记录它执行的操作;相反,它会尝试记录反转它们所需的信息。在这种情况下,您似乎陷入了该实施的空白。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    相关资源
    最近更新 更多