2015-11-26 40 views
0

我已經使用wix創建了一個msi文件,該文件允許用戶選擇目標目錄。安裝是正確的。通過用戶交互(msi安裝程序)更改INSTALLDIR

當用戶選擇非默認目標目錄時,卸載不會刪除所有文件。我不使用WixUI_InstallDir。

<Directory Id="TARGETDIR" Name="SourceDir"> 
      <Directory Id="ProgramFilesFolder" Name="PEFiles"> 
       <Directory Id="Company" Name="My Company"> 
        <Directory Id="INSTALLDIR" Name="My Product Default"> 
         <Directory Id="DOC" Name="Doc"> 


<Dialog Id="BrowseDlg" Width="370" Height="270" Title="[ProductName] [Setup]" NoMinimize="yes"> 
    <Control Id="PathEdit" Type="PathEdit" X="84" Y="202" Width="261" Height="18" Property="_BrowseProperty" Indirect="yes" /> 
    <Control Id="OK" Type="PushButton" X="304" Y="243" Width="56" Height="17" Default="yes" Text="[ButtonText_OK]"> 
     <Publish Event="SetTargetPath" Value="[_BrowseProperty]">1</Publish> 
     <Publish Event="EndDialog" Value="Return">1</Publish> 
    </Control> 
</Dialog> 

InstallLog:

MSI (c) (38:44) [10:03:19:521]: PROPERTY CHANGE: Adding INSTALLDIR property. Its value is 'C:\Program Files\My Company\My Product Default\'. 
MSI (c) (38:3C) [10:03:27:680]: PROPERTY CHANGE: Adding _BrowseProperty property. Its value is 'INSTALLDIR'. 
Action 10:03:27: BrowseDlg. Dialog created 
MSI (c) (38:3C) [10:03:39:099]: PROPERTY CHANGE: Modifying INSTALLDIR property. Its current value is 'C:\Program Files\My Company\My Product Default\'. Its new value: 'C:\Program Files\My Company\My folder\'. 
MSI (c) (38:3C) [10:03:39:209]: PROPERTY CHANGE: Modifying DOC property. Its current value is 'C:\Program Files\My Company\My Product Default\Doc\'. Its new value: 'C:\Program Files\My Company\My folder\Doc\'. 
... 

UninstallLog:安裝

MSI (s) (48:6C) [10:22:34:485]: PROPERTY CHANGE: Adding INSTALLDIR property. Its value is 'C:\Program Files\My Company\My Product Default\'. 
MSI (s) (48:6C) [10:22:34:485]: PROPERTY CHANGE: Adding DOC property. Its value is 'C:\Program Files\My Company\My Product Default\Doc\'. 

其它組分/常卸載。在卸載過程中,某些組件的路徑被設置爲默認路徑而不是用戶選擇的路徑。

我該如何解決卸載問題?

編輯: 我使用WIX 3.5.2519.0。

回答

0

假設您在卸載期間不使用該對話框,則安裝期間選擇的值不會被安裝程序保存在任何位置。這意味着在卸載它使用所有的默認值。

解決此問題的一種方法是在安裝過程中將用戶選擇保存在註冊表項中,然後在卸載過程中讀取該密鑰。