2015-02-09 162 views
0

我的Windows窗體應用程序上有一個WiX安裝程序。我經常進行重大升級,因此每個版本都將作爲安裝者(新客戶)和更新者(以前的客戶)。我遇到的問題是安裝程序正在刪除以前由安裝程序安裝並隨後進行修改的註冊表項和配置文件。WiX在安裝時卸載文件和註冊表項

例如,在初始安裝時,我在C:\ programdata \ myConfig.xml中放入了一個文件。安裝後,用戶通過用config.xml替換文件來修改文件。當我的安裝程序在升級時運行時,安裝程​​序將刪除此文件。當安裝程序運行並且該文件不存在時,它會正確安裝myconfig.xml。

我希望安裝程序永遠不會覆蓋現有的文件,也永遠不要刪除它。

<DirectoryRef Id="myFolder"> 
    <Component Id="CMP_ConfigFile" Guid="{some guid}" NeverOverwrite="yes"> 
    <File Id="myConfiguration.xml" Source="RefFiles\myConfig\xml" KeyPath="yes"/> 
    </Component> 
</DirectoryRef> 

上面是我的WiX安裝程序的代碼塊。我的註冊表項有同樣的問題。 WiX在升級時將其刪除。

<Component Id="RegistryEntriesOne" Guid="{some guid}" Directory="TARGETDIR" NeverOverwrite="yes" > 
    <RegistryKey Root="HKLM" Key="SOFTWARE\myCompany\myApp" Action="create"> 
    <RegistryValue Type ="string" Name="ConfigurationFilePath" Value="C:\ProgramData\myConfig.xml" KeyPath="yes"/> 
    </RegistryKey> 
</Component> 

想法? 庫爾特

回答

0

您需要常駐屬性被卸載

<Component Id="CMP_ConfigFile" Guid="{some guid}" NeverOverwrite="yes" Permanent="yes"> 
    <File Id="myConfiguration.xml" Source="RefFiles\myConfig\xml" KeyPath="yes"/> 
</Component> 
+0

感謝里克,我現在測試添加到組件,並將其設置爲yes,以防止部件,它似乎是工作。 – kurt 2015-02-09 14:23:46

相關問題