Wix 安装程序 - 未复制所有源和内容
Posted
技术标签:
【中文标题】Wix 安装程序 - 未复制所有源和内容【英文标题】:Wix installer- All the sources and contents are not being copied 【发布时间】:2015-02-26 12:07:15 【问题描述】:我有一个非常简单的 Wix 项目,并在其中添加了我的 c# 项目的引用。在 wix 项目引用中,我设置了 Project Output Groups = All 和 Harvest = True
在我的 Products.wxs 我有以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="SetupProject1" Language="1033" Version="1.0.0.0" Manufacturer="test" UpgradeCode="44a12fea-ec26-4237-84e1-6aefb4483c73">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate EmbedCab="yes"/>
<Feature Id="ProductFeature" Title="SetupProject1" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="SetupProject1" />
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="ProductComponent">
<File Source="$(var.MyProject.TargetPath)" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>
问题是当我安装 msi 安装程序时,只有 一个 dll 会安装到机器上,但是我希望看到所有项目内容(例如文件夹、 C# 类和 dll)在安装文件夹中不仅有单个 dll 文件。
【问题讨论】:
【参考方案1】:由于 WIX 3.6 HarvestProject 目标(Votive 中的项目输出组和收获标志对此负责)默认禁用,因为它已部分损坏。因此,您可以尝试通过将以下内容添加到 WIX 项目文件来启用它:
<PropertyGroup>
<EnableProjectHarvesting>True</EnableProjectHarvesting>
</PropertyGroup>
或者(我个人更喜欢这种方式)您可以使用HarvestDirectory 目标 - 它会递归地收集给定目录中的所有文件和文件夹并包含在安装程序中。您甚至可以通过 XSD 转换过滤收集的文件/文件夹。例如和如何做的详细解释-参考我对this问题的回答
【讨论】:
是的。忘记“harvestProject”的东西。根据我的经验,HarvestDirectory 是唯一的途径。以上是关于Wix 安装程序 - 未复制所有源和内容的主要内容,如果未能解决你的问题,请参考以下文章
WiX 刻录包安装程序 - 升级安装时未更新 ExePackage