WIX将用户数据写入配置文件

时间:2014-10-10 07:00:52

标签: wix installer install windows-installer

我想问一个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>

1 个答案:

答案 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