更改WIX的VS2010环境变量

5

我需要构建两个品牌化版本的WIX安装程序。这两个版本之间唯一的区别是包含公司联系方式的单个位图。我想保持一个WIX项目,这样我就可以少维护一些项目。我使用环境变量来更改插入到安装程序中的位图。

Source="$(env.CompanyName) contact.png"

这样做没问题,但是我无法在VS2010内更改环境变量。VS2010使用启动时设置的环境变量编译WIX安装程序。我必须重新启动VS2010才能获取新的环境变量值。
我有36个嵌套项目,所以不想在每个项目中设置构建变量 - 这就是为什么我试图使用环境变量的原因。
有人知道如何更改当前VS2010实例使用的环境变量之一吗?或者也许有更好的方法吗?
1个回答

8

我可以在一个WiX项目中进行此类自定义设置以及更多功能。我为每个变体配置不同的项目配置。所以,与其说是“Debug”和“Release”,我会使用例如“Debug”,“East”和“West”。这仅适用于安装程序项目。代码项目仍然使用“Debug”和“Release”。WiX编译器可以读取配置值。

<?if   $(var.Configuration)="West"?>
  <?define CompanyName="West Coast Office"?>
<?elif $(var.Configuration)="East"?>
  <?define CompanyName="East Coast Office"?>
<?else?>
  <?define CompanyName="Debugging purposes"?>
<?endif?>

Source="$(var.CompanyName) contact.png"

或者,您可以将其添加到设置项目的预处理器变量中(项目属性,生成,常规),但是同样需要多个配置:

CompanyName=West Coast Office

在您的 Product.wxs 文件中:

Source="$(var.CompanyName) contact.png"

要在Visual Studio中添加配置:

  1. 打开菜单Build, Configuration Manager...
  2. Active solution configurations下选择<New...>
  3. 输入名称(例如East),从Release复制设置,不要创建新的项目配置。
  4. 重复步骤2和3为另一个办公室创建配置(例如West)。
  5. 在安装程序项目旁边,打开Configuration下拉列表,并选择<New...>
  6. 输入名称East,从Release复制设置,不要创建新的项目配置。
  7. 重复步骤5和6为West创建配置。
  8. 在安装程序项目旁边,打开Configuration下拉列表,并选择<Edit...>
  9. 选择Release,然后按Remove,接着按YesClose来删除。
  10. Active solution configurations下选择<Edit...>
  11. 选择Release,然后按Remove,接着按YesClose来删除。
  12. Active solution configurations下选择East
  13. 将安装程序项目的配置设置为East,并将其他项目的配置设置为Release。在每个项目旁边勾选Build(假设您需要它们全部)。
  14. 重复步骤12和13为West创建配置。

现在,当您选择每个解决方案配置时,应具有以下设置:

Solution       Debug    East     West
------------------------------------------
Main Project   Debug    Release  Release
Setup Project  Debug    East     West

最后,进入设置项目的属性,确保东部和西部配置都正确。注意输出文件夹。如果它仍然是“bin \ Release”,那么这两个配置将覆盖彼此的输出。分别设置为“bin \ East”和“bin \ West”。


我明白你的意思,但是我遇到了一个错误:此项目未设置OutputPath属性。请检查您是否指定了有效的Configuration/Platform组合。Configuration='Alquist' Platform='x86'当我进入WIX项目属性中的Build时,我只能在Configuration组合框中选择Release和Debug。有什么想法吗? - Andrew Jones
有几个步骤需要完成,所以我已经将它添加到我的上面的答案中了。 - Hand-E-Food

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