1

WiX (バージョン 3.8) から始めたばかりですが、WiX を使用して Web サイトを展開するのはまったく簡単ではないように思われることに驚いています。IIS やセットアップを調整するためのカスタム アクション、またはサイトをプリコンパイルするかどうかなどのインフラストラクチャの側面についてはまだ心配していませんが、簡単な Web サイトをフォルダーにデプロイするだけで十分です。しかし、展開される唯一のファイルは 1 つの dll です (その名前は、csproj で構成された AssemblyName プロパティから派生しているように見えます)。

グーグルで調べた後、プロジェクト参照で Harvest=True を設定<EnableProjectHarvesting>True</EnableProjectHarvesting>し、wixproj ファイルに追加してみました。ただし、同じ dll のみが展開されます。(Orca は、MSI ファイル テーブル内の唯一のファイルであることを示しています)。

以下を wixproj に追加すると、Heat、Candle、および Light がハードコーディングされたフォルダーから一連のファイルを処理することに成功しますが、それ以外のデプロイには成功しません。MSI ファイル テーブルには 1 つの dll しか含まれていません。

<Target Name="BeforeBuild">
    <!-- try hardcoded path -->
 <HeatDirectory 
  ToolPath="$(WixToolPath)" 
  OutputFile="%(ProjectReference.Filename).wxs" 
  Directory="C:\Dev\2010\HelloWixWebApplication\HelloWixWebApplication" 
  GenerateGuidsNow="true"
  DirectoryRefId="TARGETDIR"
  />
 <!-- some properties that Candle will use, so we should be able to to tell it to look in this folder for the .wks -->
 <PropertyGroup>
  <!--IncludeSearchPaths>.</IncludeSearchPaths -->
  <CompilerAdditionalOptions>%(ProjectReference.Filename).wxs</CompilerAdditionalOptions>
  <!--and one for Light: -->
  <LinkerAdditionalOptions>obj\Debug\%(ProjectReference.Filename).wixobj</LinkerAdditionalOptions>
 </PropertyGroup>
</Target>

主な質問に戻りますが、実際には役に立ちますが、見つけられないようです: WiX を使用して単純な asp.net Web サイトを展開する実際の例です。誰?ティア。


Rob Mensching の質問への回答として、この構成から生成される追加の .wxs ファイルを以下に示します。(別の場所で修正したスペルミスのある HellowWix.. は無視してください。)

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <DirectoryRef Id="TARGETDIR">
            <Directory Id="dirE7F2BE36CFADC3ED9ACCB1F42198C997" Name="HellowWixWebApplication" />
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="dir6DED4C9E136E741825339CEA6DE213D8">
            <Component Id="cmp04A9076B920B178A9BB40ABB0D0C5785" Guid="{C6AA8596-0107-4360-85B1-503CC6F319FA}">
                <File Id="fil021D16CABEED58F6659FD4103DD68AC4" KeyPath="yes" Source="SourceDir\bin\HellowWixWebApplication.dll" />
            </Component>
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="dirE7F2BE36CFADC3ED9ACCB1F42198C997">
            <Component Id="cmp19A9163AE8A7925CB6C4247D145B22B6" Guid="{D7B85294-12DF-4784-B6DA-BF7AEBA475C9}">
                <File Id="fil24F0BD7A232604DB4D8E369EFDB7AB28" KeyPath="yes" Source="SourceDir\Web.Release.config" />
            </Component>
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="dirE7F2BE36CFADC3ED9ACCB1F42198C997">
            <Component Id="cmp22213FE3CD8C99A9A7563D7AFD66052E" Guid="{99E59BF6-640B-4E35-B4D8-671927AF9BD3}">
                <File Id="fil4AA1682891BEFAA2AB3CB1ABCBE9C155" KeyPath="yes" Source="SourceDir\HellowWixWebApplication.csproj" />
            </Component>
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="dirE7F2BE36CFADC3ED9ACCB1F42198C997">
            <Component Id="cmp277C2DBCB4DB3C289C46A9784423A2C1" Guid="{7DF707B0-55BF-4899-805C-97A1A2081528}">
                <File Id="filE62AD3DD98C8055C24348922079D0E2E" KeyPath="yes" Source="SourceDir\Default.aspx.designer.cs" />
            </Component>
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="dirE7F2BE36CFADC3ED9ACCB1F42198C997">
            <Component Id="cmp2E90B366B07FD51B623E7CF089E2932D" Guid="{17914BB7-5A02-499B-AC0C-F1F9FCB6019F}">
                <File Id="filC05278F3F8EB3611EB1EBB30F6EA4AFB" KeyPath="yes" Source="SourceDir\Web.config" />
            </Component>
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="dirE7F2BE36CFADC3ED9ACCB1F42198C997">
            <Component Id="cmp3025675392247E7856146E4D28076668" Guid="{2905F7E7-536B-44E5-8C10-45A954CE9E86}">
                <File Id="fil8EB5092298D94AE4C4677473CAAFC0E0" KeyPath="yes" Source="SourceDir\Web.Debug.config" />
            </Component>
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="dir6E0901CF23FF0CE2677DE6B8BBA3B8BD">
            <Component Id="cmp7C99050A7370BF342937DF8E86BA1863" Guid="{5DF80AF2-1459-43CD-A649-90AB1F2C57AE}">
                <File Id="filB73CA61225E396C5CD26B29E8FAA7AFE" KeyPath="yes" Source="SourceDir\obj\Debug\HellowWixWebApplication.pdb" />
            </Component>
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="dir4F5CB8DBC18741F08CCFF2B59DDE3481">
            <Component Id="cmp976F1DA49CEA0FDDB2D0EA8C756C7DCF" Guid="{1069A669-F349-427F-B01A-64E942AFED2F}">
                <File Id="fil21676E8D65B4C460832839007C43343E" KeyPath="yes" Source="SourceDir\Properties\AssemblyInfo.cs" />
            </Component>
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="dirE7F2BE36CFADC3ED9ACCB1F42198C997">
            <Component Id="cmpA0C26A291B35A1F7C8F75C76C408C355" Guid="{51AE16C4-A743-4EFA-8678-064A6550F228}">
                <File Id="fil9A7337716828B5F0F975E4B424B18285" KeyPath="yes" Source="SourceDir\Default.aspx.cs" />
            </Component>
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="dir6E0901CF23FF0CE2677DE6B8BBA3B8BD">
            <Component Id="cmpAA37E12AC25051F1FB98359B5654CBB6" Guid="{4D81902A-9F6C-47D8-95AF-ED1D7062771C}">
                <File Id="fil053D1EA59D1DC9708FA9DF93DCE32BF2" KeyPath="yes" Source="SourceDir\obj\Debug\HellowWixWebApplication.dll" />
            </Component>
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="dir6E0901CF23FF0CE2677DE6B8BBA3B8BD">
            <Component Id="cmpAB40655D2EEBFE8E7DA2D5C008705F7A" Guid="{01C5537C-257D-4472-BB27-778DDB5E2CEA}">
                <File Id="fil1B67F0463CE8AA35030E31A3E3BFA82D" KeyPath="yes" Source="SourceDir\obj\Debug\HellowWixWebApplication.csproj.FileListAbsolute.txt" />
            </Component>
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="dir6E0901CF23FF0CE2677DE6B8BBA3B8BD">
            <Component Id="cmpD72354FE851F86AF61BFD2B884E05B34" Guid="{230F8CC1-9DF3-4B44-B6C8-617090329C82}">
                <File Id="filBF0022433A84B60F69F4ECF6724E4BA3" KeyPath="yes" Source="SourceDir\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache" />
            </Component>
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="dirE7F2BE36CFADC3ED9ACCB1F42198C997">
            <Component Id="cmpEA2E4AE70EBEAF6FCFC294661CE9EF29" Guid="{ADE9B8A8-F4CC-4CE7-845F-5C526A9E6149}">
                <File Id="fil76F4E5B6801E021CFE962F5C33DEA62F" KeyPath="yes" Source="SourceDir\Default.aspx" />
            </Component>
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="dirE7F2BE36CFADC3ED9ACCB1F42198C997">
            <Component Id="cmpEC68C3F57C9E201E67744CC0DA54E083" Guid="{42F553F5-90B1-4190-A6BC-1DD41928F151}">
                <File Id="fil4B42859DA454D34945962FBFB3BFB0C1" KeyPath="yes" Source="SourceDir\HellowWixWebApplication.csproj.user" />
            </Component>
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="dirE7F2BE36CFADC3ED9ACCB1F42198C997">
            <Directory Id="dir4F5CB8DBC18741F08CCFF2B59DDE3481" Name="Properties" />
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="dirE7F2BE36CFADC3ED9ACCB1F42198C997">
            <Directory Id="dir6DED4C9E136E741825339CEA6DE213D8" Name="bin" />
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="dirAD6B115F080FDBD956168CB7C622647C">
            <Directory Id="dir6E0901CF23FF0CE2677DE6B8BBA3B8BD" Name="Debug" />
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="dirE7F2BE36CFADC3ED9ACCB1F42198C997">
            <Directory Id="dirAD6B115F080FDBD956168CB7C622647C" Name="obj" />
        </DirectoryRef>
    </Fragment>
</Wix>
4

2 に答える 2

1

生成されたファイルを含めるには、それらがコンポーネント内にある必要があり、それがフィーチャーに含まれます。

これを行う最も簡単な方法は、HeatDirectory 要素を次のように変更することです。

<HeatDirectory 
    ToolPath="$(WixToolPath)" 
    OutputFile="%(ProjectReference.Filename).wxs" 
    Directory="C:\Dev\2010\HelloWixWebApplication\HelloWixWebApplication" 
    GenerateGuidsNow="true"
    DirectoryRefId="TARGETDIR"
    ComponentGroupName="ContentFiles"
    SuppressFragments="true" />

ComponentGroupNameパラメータとパラメータを追加しSupressFragmentsます。次に、<ComponentGroupRef Id="ContentFiles" />要素を使用して、そのコンポーネントを機能に含めます。

私は通常、属性も追加するSuppressUniqueIdsので、読みやすくなっています。

個人的には、生成された wxs をプロジェクトに直接含めて、新しいファイルが含まれたときに更新することを好みます。そのように、それはまさに私が望む方法です。もう 1 つのオプションは、xslt 変換を使用して、csproj などの不要なものを取り除き、Transform属性で指定することです。

于 2013-03-21T13:40:53.867 に答える