安装程序有条件地拾取文件
Installer conditionally picking up files
我正在构建 Wix 安装程序,我需要上述安装程序的两个不同版本。一个选择项目的最新开发版本,一个选择最新的发布版本。目前我的片段看起来像这样:
<Property Id="Program.ReleaseBuild" Value="0" />
<?define ReleaseBuild = [Program.ReleaseBuild]?>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="InstallFolder">
<Component Id="TheExe" Guid="GUID_GOES_HERE">
<?if $(var.ReleaseBuild) = 1?>
<File Id="ProjectExe" Source="(Rel Project Path)/program.exe" />
<?else?>
<File Id="ProjectExe" Source="(Dev Project Path)/program.exe" />
<?endif?>
</Component>
</ComponentGroup>
</Fragment>
而且我在 msi 上有一个转换,可以在构建后转换文件。但问题是该文件是在编译时而不是安装时获取的,因此安装程序的两个版本最终都包含相同的文件。知道如何在同一 wix 项目中有条件地获取开发文件或 rel 文件吗?
如果您想根据构建质量创建安装包(调试 与 发布),您可以使用两个产品配置和 select 基于它的源代码。这样,您可以 运行 msbuild 两次,每个配置一个。我不明白你说的转换的目的。
因此,您可以采取以下步骤来完成此操作:
- 创建一个空的解决方案。
- 添加你的wixproj。
- 将你的 csproj 添加到其中。
- 将 csproj 的引用添加到 wixproj。
- 修改您的
File[Source]
以使用项目引用,这样:
<File Source="$(var.MyProject.TargetPath)" Id="ProjectExe" />
$(var.MyProject.TargetPath)
会自动从正确的路径获取exe。
- 为 运行 msbuild 创建批处理文件两次,每个配置一个,使用以下命令:
C:\> msbuild mySolution.sln /p:Configuration=Debug
C:\> msbuild mySolution.sln /p:Configuration=Release
结果将是两个安装包,每个配置一个。
我正在构建 Wix 安装程序,我需要上述安装程序的两个不同版本。一个选择项目的最新开发版本,一个选择最新的发布版本。目前我的片段看起来像这样:
<Property Id="Program.ReleaseBuild" Value="0" />
<?define ReleaseBuild = [Program.ReleaseBuild]?>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="InstallFolder">
<Component Id="TheExe" Guid="GUID_GOES_HERE">
<?if $(var.ReleaseBuild) = 1?>
<File Id="ProjectExe" Source="(Rel Project Path)/program.exe" />
<?else?>
<File Id="ProjectExe" Source="(Dev Project Path)/program.exe" />
<?endif?>
</Component>
</ComponentGroup>
</Fragment>
而且我在 msi 上有一个转换,可以在构建后转换文件。但问题是该文件是在编译时而不是安装时获取的,因此安装程序的两个版本最终都包含相同的文件。知道如何在同一 wix 项目中有条件地获取开发文件或 rel 文件吗?
如果您想根据构建质量创建安装包(调试 与 发布),您可以使用两个产品配置和 select 基于它的源代码。这样,您可以 运行 msbuild 两次,每个配置一个。我不明白你说的转换的目的。
因此,您可以采取以下步骤来完成此操作:
- 创建一个空的解决方案。
- 添加你的wixproj。
- 将你的 csproj 添加到其中。
- 将 csproj 的引用添加到 wixproj。
- 修改您的
File[Source]
以使用项目引用,这样:
<File Source="$(var.MyProject.TargetPath)" Id="ProjectExe" />
$(var.MyProject.TargetPath)
会自动从正确的路径获取exe。
- 为 运行 msbuild 创建批处理文件两次,每个配置一个,使用以下命令:
C:\> msbuild mySolution.sln /p:Configuration=Debug C:\> msbuild mySolution.sln /p:Configuration=Release
结果将是两个安装包,每个配置一个。