我有一个ASP.NET项目,一个针对它的WIX安装程序项目,以及一个安装程序的构建文件。构建文件:
SetupFiles/publish/
)heat.exe
和candle.exe
我想在安装过程中修改其中一个配置文件(从light.exe
目录中获取的Web.Release.config
)。我找到了以下代码:
SetupFiles/publish
来自this问题。
我的问题是,我应该在File的标签Source属性中写什么?如果我写<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>
,则light.exe会出现以下错误:
SetupFiles/publish/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表示无法找到该文件。
我尝试Web.Release.config
([INSTALLDIR]/Web.Release.config
是我的设置项目中的变量),但在这种情况下,light.exe也说它无法找到该文件。
感谢您的帮助!
答案 0 :(得分: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
答案 1 :(得分:0)
您误解了如何使用util:XmlFile
。 heat.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>