我想问一个WiX安装程序问题。我创建了一个可以完成许多工作的工作安装程序。我仍然需要询问用户一些特定信息(GUI已经完成),并将其写入配置文件。
从这个片段中,我想我可以使用INSTALLFOLDER
全局变量。
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="IISROOT" Name='WebDir'>
<Directory Id="INSTALLFOLDER" Name="IVRDesigner">
</Directory>
</Directory>
</Directory>
这是我想要使用它的部分。如果源标记填写正确,此代码将从教程中获取,应该可以正常工作。 ..\src\Web.config
只是一个虚拟,所以代码可以编译。 web.config
文件的默认安装路径为C:\inetpub\wwwroot\myfolder
,但用户可以在安装过程中更改此路径。
问题是:我怎么能在这里使用全局变量,或者你推荐什么样的解决方案?
提前致谢。
<Component Id="ConfigureWebConfig" Guid="*">
<File Id="Web.config" Name="MyConfigfile" Vital="yes" KeyPath="yes"
Source="..\src\Web.config" />
<util:XmlFile Id="AppConfigSetConnStr" Action="setValue"
Permanent="yes" File="[#Web.config]"
ElementPath="/configuration/connectionStrings/add[\[]@name='GeoIVRDesignerEntities'[\]]" Name="connectionString"
Value="data source=[DBSERVER];" />
</Component>
答案 0 :(得分:2)
在Product标签下,我会添加我希望能够在配置文件中更改的属性,如下所示:
<Property Id="BUILDRAN" Value="INSTALLER"/>
<Property Id="EMAIL_RECEIPIANT" Value="thisisnotme@notthere.com" />
为目录结构创建片段
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir" >
<Directory Id="BasicDir" Name="Dev_Home">
<Directory Id="BasicDirSuite" Name="TEST">
<Directory Id="INSTALLFOLDER" Name="DesignPatterns" />
</Directory>
</Directory>
</Directory>
</Fragment>
声明另一个片段以转换配置文件
<util:XmlFile Id="AppConfigSetBuildRan" Action="setValue" Permanent="yes" File="[#App.config]"
ElementPath="/configuration/applicationSettings/MyApp.Properties.Settings/setting[\[]@name='BuildRan'[\]]/value"
Value="[BUILDRAN]" />
<util:XmlFile Id="AppConfigSetEmail" Action="setValue" Permanent="yes" File="[#App.config]"
ElementPath="/configuration/applicationSettings/MyApp.Properties.Settings/setting[\[]@name='TestValue'[\]]/value"
Value="[EMAIL_RECEIPIANT]" />
如果需要,您可以创建自己的自定义对话框,让最终用户输入属性[BUILDRAN]&amp;&amp; [EMAIL_RECEIPIANT],或者您可以使用命令行并使用参数设置属性
msiexec /i My.msi BUILDRAN=SuperDebug EMAIL_RECEIPIANT=you@home.com