【发布时间】:2014-03-13 05:25:54
【问题描述】:
我正在使用 WiX 3.8 为 MVC Web API 项目构建网站安装程序。我已成功按照教程的步骤创建了 MSI 文件,该文件应将所有 Web 应用程序文件复制到我的 IIS 文件夹中。但是在执行它时,我没有看到任何文件被复制并且 MSI 退出没有任何错误。我也检查了事件日志,它说安装程序运行成功。下面是 MS Build 文件:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebSiteSource>..\API\</WebSiteSource>
<SetupF>..\Setup\</SetupF>
<PublishF>publish\</PublishF>
<Publish>$(SetupF)$(PublishF)</Publish>
<WebSiteContentCode>WebAPIContent.wxs</WebSiteContentCode>
<WebSiteContentObject>WebSiteContent.wixobj</WebSiteContentObject>
<MsiOut>bin\Release\Setup.msi</MsiOut>
</PropertyGroup>
<!-- Defining group of temporary files which is the content of the web site. -->
<ItemGroup>
<WebSiteContent Include="$(WebSiteContentCode)" />
</ItemGroup>
<!-- The list of WIX input files -->
<ItemGroup>
<WixCode Include="Product.wxs" />
<WixCode Include="$(WebSiteContentCode)" />
</ItemGroup>
<Target Name="Build">
<!-- Compile in release mode -->
<MSBuild Projects="..\API\API.csproj" Targets="ReBuild" Properties="Configuration=Release" />
</Target>
<Target Name="PublishWebsite">
<!-- Remove complete publish folder in order to be sure that evrything will be newly compiled -->
<Message Text="Removing publish directory: $(SetupF)"/>
<RemoveDir Directories="$(SetupF)" ContinueOnError="false" />
<Message Text="Start to publish website" Importance="high" />
<MSBuild Projects="..\API\API.csproj" Targets="ResolveReferences;_CopyWebApplication" Properties="OutDir=$(Publish)bin\;WebProjectOutputDir=$(Publish);Configuration=Release" />
</Target>
<Target Name="Harvest">
<!-- Harvest all content of published result -->
<Exec
Command='"$(Wix)bin\heat" dir $(Publish) -dr INSTALLFOLDER -ke -srd -cg apicomponents -var var.publishDir -gg -out $(WebSiteContentCode)'
ContinueOnError="false"
WorkingDirectory="." />
</Target>
<Target Name="WIX">
<Message Text="TEST: @(WixCode)"/>
<Exec
Command='"$(Wix)bin\candle" -dpublishDir=$(Publish) -dMyWebResourceDir=. @(WixCode, ' ')'
ContinueOnError="false"
WorkingDirectory="." />
<Exec
Command='"$(Wix)bin\light" WebAPIContent.wixobj Product.wixobj -out $(MsiOut)'
ContinueOnError="false"
WorkingDirectory="." />
<Message Text="Install package has been created." />
</Target>
</Project>
产品.wxs
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="ApiSetup" Language="1033" Version="1.0.0.0" Manufacturer="Fingent" UpgradeCode="20e8d558-9fc4-4bd3-9842-76ae40edd994">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of API is already installed." />
<Media Id="1" Cabinet="api.cab" EmbedCab="yes" />
<Feature Id="ProductFeature" Title="api.Setup" Level="1">
<ComponentGroupRef Id="apicomponents" />
</Feature>
</Product>
<Fragment>
<!-- Will default to C:\ if that is the main disk -->
<Directory Id="TARGETDIR" Name="SourceDir">
<!-- Will reference to C:\wwwroot-->
<Directory Id="INETPUB" Name="Inetpub">
<!-- Will reference to c:\wwwroot\api-->
<Directory Id="INSTALLFOLDER" Name="api" />
</Directory>
</Directory>
</Fragment>
</Wix>
如您所见,我使用 Heat 来生成文件列表。它的 WXS 文件已正确生成,我还获得了 OBJ 文件和 MSI,但在执行后什么也没做。请帮忙。
【问题讨论】:
-
原来targetdir是我的D盘而不是C:。我在那里找到了文件。不知道如何将其设置为 C 盘。
标签: asp.net-web-api wix installation