2010-06-01 213 views
0

好吧!我終於更仔細地發現了我遇到的問題。在我的安裝程序中,我試圖在主要升級上獲取設置文件以保持完整。我終於得到這個與建議工作,建立WiX主要升級!需要不同組件的不同行爲

<InstallExecuteSequence> 
    <RemoveExistingProducts After="InstallFinalize" /> 
</InstallExecuteSequence> 

這是成功的迫使該組件離開原來的,如果它不存在替代它:

<Component Id="Settings" Guid="A3513208-4F12-4496-B609-197812B4A953" NeverOverwrite="yes"> 
    <File Id="settingsXml" KeyPath="yes" ShortName="SETTINGS.XML" Name="Settings.xml" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\Settings\settings.xml" Vital="yes" />   
</Component> 

無論其!這是個問題!我在此處列出了另一個組件:

<Component Id="Database" Guid="1D8756EF-FD6C-49BC-8400-299492E8C65D" KeyPath="yes"> 
    <File Id="pathwaysMdf" Name="Pathways.mdf" DiskId="1" Source="\\fileserver\Shared\Databases\Pathways\SystemDBs\Pathways.mdf" Vital="yes"/> 
<File Id="pathwaysLdf" Name="Pathways_log.ldf" DiskId="1" Source="\\fileserver\Shared\Databases\Pathways\SystemDBs\Pathways.ldf" Vital="yes"/> 
</Component> 

此組件必須在主要升級時進行替換。我只能通過設置

<RemoveExistingProducts After="InstallInitialize" /> 

這個破解我需要的設置文件的第一個功能。

我該怎麼辦?

+0

也許我需要的是兩個自定義操作,一個可以備份RemoveExistingProducts之前存在,另一個用於恢復文件的文件?任何人都可以告訴我這是什麼樣子?實際的行動需要一個exe或bat文件?我如何將文件和目錄的名稱傳遞給它? – Joshua 2010-06-01 17:56:33

回答

1

問題是不應該首先安裝settings.xml,您真正想要做的就是安裝類似'defaultSettings.xml'的東西,並將用戶可編輯設置放在一個單獨的位置,將默認設置複製到用戶/系統配置在安裝後配置步驟或第一次運行時。如果用戶修改該文件並運行「修復」,則無論如何它將被覆蓋,這是Windows Installer的預期行爲。

如果您確實希望Windows Installer「讓文件保持獨立」,那麼您將需要一個非託管組件,即具有空GUID的組件。如...

<Component Id="Settings" Guid="" NeverOverwrite="yes"> 
    <File Id="settingsXml" KeyPath="yes" ShortName="SETTINGS.XML" Name="Settings.xml" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\Settings\settings.xml" Vital="yes" />   
</Component> 
+0

除了我不能改變這個!我在開始在這裏工作之前正在處理舊版安裝程序,這需要使用我編寫的新版本進行更新! – Joshua 2010-06-01 22:37:25

+0

我已經決定剩下的唯一選擇是兩個自定義操作...我正在努力工作! http://stackoverflow.com/questions/2953366/wix-custom-action-with-dtf-quite-confused – Joshua 2010-06-01 22:39:47