我們有一個使用wix構建的MSI,它安裝了我們的基於ruby的產品。當我們發佈第一個版本時,有一個錯誤。升級會覆蓋對ruby配置文件(gemrc)的更改,在某些情況下會有效打破產品。WIX,如何不替換配置文件
我一直在試圖讓MSI無法刪除或替換升級時的配置文件,但沒有成功。
我現在擁有的是:
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallExecuteAgain" />
</InstallExecuteSequence>
<Directory Id="embeddedDir" Name="embedded">
<Directory Id="embeddedEtcDir" Name="etc">
<Component Id="gemrcComponent" Guid="uuid..." NeverOverwrite='yes' Permanent='yes'>
<File Id='gemrc' Name='gemrc'
Source='$(var.ProjectSourceDir)\embedded\etc\gemrc.default' Vital='yes' KeyPath='yes' />
</Component>
</Directory>
</Directory>
然而,從當前版本(1.0)到新版本(1.1)打算將離開安裝沒有gemrc可言。繼續前進它可以工作,所以從1.1到1.2會離開現有的(修改過的)文件。
我假設,它不起作用的原因是因爲它使用舊的1.0 MSI來刪除現有的安裝,並且該版本已將gemrc文件標記爲需要刪除的產品的一部分。
這意味着我可以解決這個問題的唯一方法是使用自定義操作(在安裝之前將文件複製到臨時路徑,然後再將其移回 或類似的東西)。有更好/更簡單的方法嗎?
由於安裝程序和配置文件的問題,我們在項目中決定不安裝安裝程序的配置文件。麻煩是不值得的。我們的應用程序查找現有的配置文件,如果它們不存在,請創建一個默認文件。 在移除過程中,我們要求保留配置文件,如果不是,請刪除它們。 – linuxrocks