Wix工具集 - 跨项目/解决方案的共享变量
问题描述:
我想跨我的两个wix项目共享变量,但我遇到了问题。Wix工具集 - 跨项目/解决方案的共享变量
基本上我试图完成我的引导程序和MSI的版本号在一个文件中,然后引用这两个项目。
我有三个项目
- 安装 - 这是创建一个.msi文件
- 引导程序安装项目 - 这是一个维克斯引导程序项目,引用并运行在运行时 .msi文件
- 共享 - 这是包含在作为版本号
共享项目包含一个单一的文件我称水珠的片段的单个可变一个wixlib项目alVars.wxs,看起来像这样
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<?define VersionNo = "6.86.123"?>
</Fragment>
</Wix>
引导程序引用这样
<Bundle Name="ProgramName" Version="$(var.VersionNo)" Manufacturer="CompanyName" UpgradeCode="Guid" Compressed="no">
和安装项目这个变量的变量引用这样的 - 并具有共享项目的.wxs参考
<Product Id="*" Name="Program Name" Language="2057" Version="$(var.VersionNo)" Manufacturer="CompanyName" UpgradeCode="guid">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" InstallPrivileges="elevated"/>
<?include GlobalVars.wxs ?>
两个项目都引用设置到包含变量
的wixlib项目当我尝试建立我收到的安装和引导程序的项目都出现此错误
Undefined preprocessor variable '$(var.VersionNo)'.
如果<?include?>
标签解决的问题,我会想到安装项目,以建立
没有人有任何的想法至于我可能在这里做错了什么?
对我来说,它看起来像变量没有被构建试图调用它的时候定义的,但我不能确定,以显示更改为保证变量别的
由于之前被定义寻求帮助
答
我相信answer这个问题会有帮助。我使用过它并注意到这些属性似乎可以在我的主wxs文件中使用。总之,你需要在你的库碎片中设置一个假的componentGroup,并在你的安装程序中使用它。只要你的片段中的假componentGroup在你的主安装中被引用为componentGroupRef,并且你的wixlib项目通过VS在你的安装程序项目中被引用了,你就不需要包含了(你说你已经在你的上面的评论)。
你的库的片段可能看起来像这样。
<Fragment id="fragment_id_may_not_be_needed">
<?define VersionNo = "6.86.123"?>
<ComponentGroup Id="c.define_version_num" />
</Fragment>
如果因任何原因定义不起作用,请尝试使用属性。我很想知道哪些作品。属性似乎适用于我。
然后引用它在你的主安装这样的:
<Feature Id="Main_installation" Title="Main installation" Level="1">
<!-- bringing in fragments from the shared libraries -->
<ComponentGroupRef Id="c.define_version_num" />
</feature>
试一试。
我想你是混合预处理和运行时。 是预处理,它不会创建变量。 –
啊,这是有道理的!那么我该如何做一个变量? (对不起,真的很简单的问题我知道!) – martpendle
你可以使用Windows Installer属性 –