我在安裝兩種工作模式:從以前的安裝遺留 如何在WIX安裝期間有條件地覆蓋文件?
- 使用的配置文件,並把默認CONFIGS代替
模式由複選框中確定安裝程序的WPF UI。如果選擇了第二模式,則CustomAction運行,其手動地從磁盤中刪除CONFIGS文件夾:
<InstallExecuteSequence>
<Custom Action="RemoveConfigsFolder" After="RemoveFolders" Overridable="yes">NOT Installed AND DELETESETTINGS=1</Custom>
</InstallExecuteSequence>
我使用NeverOverwrite屬性:
<ComponentGroup Id="Configs" Directory="INSTALLDIR" >
<Component Id="Configs" Permanent="yes" NeverOverwrite="yes">
<File Id="main.config" Name="main.config" Source=".\Configs\main.config" KeyPath="yes" />
</Component>
</ComponentGroup>
第一模式在這種情況下工作得很好,但是當我嘗試使用第二種模式時,它會失敗,並且所有配置都將被刪除,並且在安裝過程中不會再次創建。
在我的問題的研究,我想我已經找到了之所以出現這種情況:https://community.flexerasoftware.com/showthread.php?96157-The-truth-the-whole-truth-about-quot-Never-overwrite-quot-and-quot-Permanent-quot-files&p=156826#post156826
其實這是一個Windows安裝程序的問題。如果您記錄卸載 ,您會注意到在安裝的早期安裝程序 決定包含此文件的組件將不會安裝 ,因爲它被標記爲「從不覆蓋」,並且此文件的副本已在目標上存在 機。卸載發生在那個 刪除現有文件之後。這是因爲安裝程序在啓動「CostFinalize」操作時決定使用此 。此操作必須在「RemoveFiles」操作之前運行 。
但我該如何解決?
這是一個重大的升級情況,如果是的話,它在哪裏安排? – PhilDW