2014-07-06 46 views
0

我有一個ASP.NET項目,它的WIX安裝程序項目和安裝程序的構建文件。構建文件:WIX - 在安裝過程中更改配置文件

  • 構建我的項目
  • 網站主要刊登到某個目錄(SetupFiles/publish/
  • 的維克斯的heat.exe「豐收的網站的文件
  • 之後創建了candle.exelight.exe
  • 安裝程序

我想修改其中一個配置文件(Web.Release.config,收穫fr om安裝目錄中的SetupFiles/publish目錄)。我發現它的代碼如下:

<Component Id="ChangeConfig" Guid="[YOUR_GUID_HERE]"> 
    <File Id="App.config" Name="MyApplication.exe.config" Vital="yes" KeyPath="yes" Source="[Path to project dir]\app.config" /> 
    <util:XmlFile Id="AppConfigSetConnStr" Action="setValue" Permanent="yes" File="[#App.config]"    
    ElementPath="/configuration/connectionStrings/add[\[]@name='MyDatabaseName'[\]]" Name="connectionString" 
    Value="Your Connection string values here" /> 
</Component> 

this問題。

我的問題是,我應該寫入文件的標籤源屬性?如果我寫SetupFiles/publish/Web.Release.config,該light.exe提供了以下錯誤:如果我寫的只是Web.Release.config

D:\Works\Employer\MyProject12345\trunk\Project.Setup\SetConfigFile.wxs(7): er 
ror LGHT0204: ICE30: The target file 'cktmp8gm.con|Web.Release.config' is insta 
lled in '[TARGETDIR]\Inetpub\Proje\' by two different components on an LFN syst 
em: 'cmpA0B9415D5BC7EAB6CA7F504326ED1B32' and 'ChangeConfig'. This breaks compo 
nent reference counting. [D:\Works\Employer\MyProject12345\trunk\Project.Setup\ 
setup.build] 

,該light.exe說,它無法找到該文件。

我試過[INSTALLDIR]/Web.Release.config(該INSTALLDIR是我的安裝項目中的一個變量),但在這種情況下,light.exe也表示它找不到該文件。

感謝您的幫助!

回答

0

爲什麼要修改Wix項目中的web.release.config,確定Web.release.config已經在其中生成了應用於Web.config的生成過程。如果您需要一組不同的變換,則創建一個不同的構建配置文件。

轉換完成後,收集包含在您的部署包中的Web.config,然後由於用戶選擇了選項,Wix需要/可以在安裝過程中更改此設置。在這種情況下,您將使用WixTolset的xmlConfig操作。請參閱下面的鏈接。

http://wixtoolset.org/documentation/manual/v3/xsd/util/xmlconfig.html

+0

是的,第二個是我的情況。我應該寫入XmlConfig的'File'屬性中? –

+0

假設你的Wix中有一個名爲[INSTALLLOCATION]的變量,那麼我認爲你的文件屬性應該是類似[INSTALLLOCATION] \ web.config – Hargrovm

0

你誤會了如何使用util:XmlFileheat.exe已經與<File Id="App.config" ...做了一個組件?正確?如果是 - 那麼您需要將<util:XmlFile Id="AppConfigSetConnStr" Action="setValue" ...添加到此組件。

即:

<Component Id="heat_generated_something" ....> 
    <File Id="heat_generated_app.config" ... /> 
    add this-> <util:XmlFile Id="AppConfigSetConnStr" Action="setValue" ... /> 
</Component> 
+0

謝謝你的回覆。我已經完成了該項目,並以其他方式解決了這個問題,所以我無法嘗試。 –

+0

@MortenFrederiksen似乎當我引用產生熱量的數據項時,WiX抱怨我複製了ID,當我真的試圖引用它並向它添加其他功能時。 – Ultratrunks