2016-05-23 31 views
1

爲什麼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

回答

1

Windows安裝程序在這裏有點怪異的野獸。它不記錄它執行的操作;而是試圖記錄逆轉它們所需的信息。在這種情況下,似乎你陷入了這個實現中的一個缺口。

Windows Installer注意到它已安裝組件shortcuts_INSTALLDIR。當文件安裝到特定的目錄時,它會記錄目錄的位置。然後在維護期間恢復它記錄的所有目錄。但它不記錄(因此不會恢復)該目錄只是一個快捷方式。快捷方式通常安裝在ProgramMenuFolder下的預定義路徑中。由於這些位置不受INSTALLDIR更改的影響,通常這不是問題。

要解決此問題,您必須確保在維護期間恢復備用INSTALLDIR。您可以通過直接向INSTALLDIR安裝任何文件(如果額外的文件不是問題,這是我的首選選項),可以說服Windows Installer自動執行此操作。或者,您可以通過記憶屬性模式手動執行此操作,可能會利用ARPINSTALLLOCATION及其卸載鍵中保存的值。

相關問題