2009-12-16 24 views
6

我有一個配置文件,myapp.exe.config,我想只有當它不存在時才安裝。也就是說,我不想覆蓋任何現有的配置文件。這怎麼可以在WiX中完成?複製如果不存在於WiX

(最終我將不得不做一些更復雜與設置,具有默認值,並覆蓋等等。不過在此之前,我只是尋找一個短期修正。)

回答

12

你描述的是如果文件是組件的keypath,則爲默認行爲。例如,下列各項組件將不會被如果foo.config已經存在安裝(或在一個版本的文件的情況下,如果用相同或更高的版本號的文件已經存在):

<Component Id="foo.config"> 
    <File Source="foo.config"/> 
</Component> 

請注意,如果您有組件中有多個文件,那麼只有一個可以是 關鍵路徑。您可以通過將文件的KeyPath屬性設置爲yes來控制此操作。但推薦的策略是每個組件只有一個文件,在這種情況下,文件將自動成爲組件的關鍵路徑。

編輯:請注意,此默認行爲可以用REINSTALLMODE property覆蓋。您可能想要打開您的MSI orca並查看屬性表中是否正在設置此屬性。

+1

謝謝。事實證明,我提出了錯誤的問題。在安裝新安裝程序之前,我的安裝程序必須先卸載。 (本教程向我保證,這對於次要升級來說是完全正常的)。問題是,即使用戶修改了配置文件,配置文件也會被刪除。我將不得不調查這一點。 – 2009-12-20 03:52:25