コンポーネントIDを入力する必要はありません。 File
属性には、MSIコンポーネントIDではなく、物理ファイルへのパスが必要です。ここでは(ないXmlFile
が、XmlConfig
要素とが)同じようなことを達成する方法のWiXのスニペットは次のとおりです。ここで注意すべき事柄の
<Component Id="ConnectionStringChanges" Guid="{GUID-GOES-HERE}" Directory="App_Config">
<CreateFolder/>
<Condition>NOT Installed</Condition>
<util:XmlConfig Id="ConnectionStringChange" ElementPath="connectionStrings/add[\[]@name='core'[\]]"
File="[!ConnectionStrings.config]" Name="connectionString" Action="create" Node="value" On="install"
PreserveModifiedDate="yes" Value="user id=[SQL_SERVER_CONFIG_USER];password=[SQL_SERVER_CONFIG_PASSWORD];Data Source=[SQL_SERVER];Database=[DBPREFIX]Core_DB" />
</Component>
カップル:
<Component>
要素のDirectory
属性をすることができConnectionStringChanges
コンポーネントを右の<Directory>
要素の下にネストする場合は省略されます。 ConnectionStrings.config
ファイル限り
<xsl:template match="wix:DirectoryRef/wix:Directory[@Name='App_Config']">
<xsl:element name="Directory" xmlns="http://schemas.microsoft.com/wix/2006/wi">
<xsl:attribute name="Id">App_Config</xsl:attribute>
<xsl:attribute name="Name">
<xsl:value-of select="@Name"/>
</xsl:attribute>
<xsl:apply-templates />
</xsl:element>
:ディレクトリ構造が熱で自動生成された場合は、カスタム1でApp_Config
フォルダの自動生成IDを置き換えるために、このXSLスニペットを使用することができます宣言はまた、自動生成され、あなたは\[!ConnectionStrings.config\]
syntaxでファイルを参照できるようにするには同様のトリックを適用する必要があります。
<xsl:template match="wix:DirectoryRef/wix:Directory[@Name='App_Config']/wix:Component[wix:File[@Source='$(var.Source)\App_Config\ConnectionStrings.config']]">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:attribute name="NeverOverwrite">yes</xsl:attribute>
<xsl:element name="File" xmlns="http://schemas.microsoft.com/wix/2006/wi">
<xsl:attribute name="Id">ConnectionStrings.config</xsl:attribute>
<xsl:copy-of select="wix:File/@KeyPath | wix:File/@Source"/>
</xsl:element>
</xsl:copy>
希望します。
ご回答いただきありがとうございます。 しかし私はかなり混乱しています。私はアプリケーションのルートに収穫されたApp.configファイルを持っています。 ユーザーがウィザードで変更したのは、次のとおりです。 –
makertoo