WiX安装程序条件编译?

4

我有两个主要可执行文件版本: standardpremium。为了开发的简便,它们是通过在 Visual Studio 中更改特殊的 #define 变量从单个解决方案构建的。

现在我想知道是否可能对此项目的WiX安装程序做同样的事情?

基本上,我需要控制仅包含以下 xml 节点之一:

1:对于 standard 版本 MSI :

<Product Name='Foobar 1.0 - Standard' 
    Id='8E9CF27F-B92F-4CB3-BBA0-0AAE5376D5EB' 
    UpgradeCode='20A89269-D206-490D-9134-349594662619'
    Language='1033' 
    Codepage='1252' 
    Version='1.0.0' 
    Manufacturer='Acme Ltd.'>

之后:

<Component Id='MainExecutable' Guid='E1FE2BBE-C72D-4F27-A66D-78417F597D7A'>
 <File Id='FoobarEXE' Name='FoobarAppStandardl10.exe' DiskId='1' Source='FoobarApplStandard10.exe' KeyPath='yes'>

2:针对高级版(premium)MSI:

<Product Name='Foobar 1.0 - Premium' 
    Id='8E9CF27F-B92F-4CB3-BBA0-0AAE5376D5EC' 
    UpgradeCode='20A89269-D206-490D-9134-34959466261A'
    Language='1033' 
    Codepage='1252' 
    Version='1.0.0' 
    Manufacturer='Acme Ltd.'>

然后:
<Component Id='MainExecutable' Guid='E1FE2BBE-C72D-4F27-A66D-78417F597D7B'>
 <File Id='FoobarEXE' Name='FoobarAppPremiuml10.exe' DiskId='1' Source='FoobarApplPremium10.exe' KeyPath='yes'>

PS. 我显然可以创建2个WiX项目... 我正在寻找一种在一个项目中完成的方式。

2个回答

4
我找到了它。对于其他感兴趣的人,这里是它的详细说明。

0
在我的情况下,我需要将符号编译传递给将要编译的项目。我解决了重新编译和传递符号的问题。
为此,请编辑wix项目,例如“xx.wixproj”,并在文件末尾插入:
<Target Name="MyName" AfterTargets="AfterResolveReferences">
 <MSBuild Projects="Path\xx.csproj" Properties="Configuration=$(Configuration);Platform=$(Platform);DefineConstants=$(DefineConstants)%3bMYSYMBOL;OutputPath=$(OutputPath)" />
</Target>

很遗憾,这个解决方案在使用 .netstandard dlls 和 WiX 4 的 vs 2017 中无法运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接