用于部署简单ASP.NET网站的示例WiX配置

时间:2013-03-20 19:12:10

标签: asp.net wix

刚开始使用WiX(版本3.8),我们感到惊讶的是,使用WiX部署网站似乎并不简单。尚未关注任何基础设施方面,如IIS或定制设置的自定义操作,甚至我们是否预编译网站,只是很乐意将一个简单的网站部署到文件夹。但是,唯一部署的文件是单个dll(其名称似乎是从csproj中配置的AssemblyName属性派生的)。

在一些谷歌搜索之后,我们尝试在项目引用上设置Harvest = True,并将<EnableProjectHarvesting>True</EnableProjectHarvesting>添加到wixproj文件中。但只有相同的dll才会被部署。 (Orca将其显示为MSI文件表中的唯一文件。)

将以下内容添加到wixproj成功获取Heat,Candle和Light来处理来自硬编码文件夹的一组文件,但是没有成功部署其他任何内容:仍然只有一个dll包含在MSI文件中表

<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网站的实际示例。任何人? TIA。

<小时/> 在回答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>

2 个答案:

答案 0 :(得分:1)

要包含生成的文件,他们需要将其包含在随后包含在功能中的组件中。

最简单的方法是修改HeatDirectory元素,将其更改为:

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

添加ComponentGroupNameSupressFragments参数。然后使用<ComponentGroupRef Id="ContentFiles" />元素在功能中包含该组件。

我通常还会添加SuppressUniqueIds属性,因此读取它会更好。

我个人更愿意接受生成的wx并将其直接包含在我的项目中,并在包含新文件时进行更新。这就是我想要的方式。另一种选择是使用xslt转换去除你不需要的东西,比如csproj等,并提供Transform属性。

答案 1 :(得分:0)

现在有一个Visual Studio扩展 VDProj到WiX Converter ,可以从“工具”菜单,“扩展和更新”下载。还有另一个与WIX相关的扩展,它是一个用于创建和操作Wix安装项目的设计器:

enter image description here