【问题标题】:Check condition and continue installation using Wix Toolset检查条件并使用 Wix 工具集继续安装
【发布时间】:2016-07-05 19:02:00
【问题描述】:

我有一个用于程序安装的 .wxs 文件。我想根据操作系统版本通过安装的一部分(例如,如果操作系统版本 > XP 则执行,如果 link。有一个块安装案例,但我想在条件后继续安装。 还有另一个假设——我们可以使用

<?if *condition* ?> ... <?endif?>

blocks,但我真的不明白如何在那里获取操作系统信息。 有什么想法吗?

【问题讨论】:

  • 您需要详细说明“我想根据操作系统版本通过安装的一部分(例如,如果操作系统版本> XP则执行,如果
  • @BrianSutherland 谢谢。已编辑。现在清楚了吗?
  • 是 =] 我会更新我的答案

标签: wix windows-installer installation


【解决方案1】:

您不想使用<?if ... ?>,这些是 C++ 中的 #ifdef 和 #ifndef 之类的预处理器指令,只需确定 if 之间的部分是否包含在编译中。这只会在构建机器上构建时进行评估。

这样的事情会阻止您的安装在 Windows XP 或更早版本的机器上运行。

<Condition Message="!(loc.OSNotSupported)">Installed OR VersionNT &gt; 501 OR VersionNT64 &gt; 501</Condition>

类似的条件可用于指示是否安装组件、安装功能或运行自定义操作。

如果您更新您的问题并对此答案发表评论,我会尝试更新我的答案以更好地回答您的问题。


要根据您运行的机器的操作系统安装某些组件非常简单,只需将以下内容添加到您的&lt;component&gt;

<Component Id="InstallMeOnXP" Guid="*">
    <Condition>VersionNT &lt;= 501 OR VersionNT64 &lt;= 501</Condition>
    <File Id="XPOnly.dll" KeyPath="yes" Source="$(var.BinariesDir)\_bin\XPOnly.dll" />
</Component>

如果条件评估为 TRUE,则将安装组件,否则将不安装。有关 wix 中 Condition 元素的更多信息。

这里是有关 Windows Installer 的默认 VersionNTVersionNT64 属性的信息。

【讨论】:

  • 非常感谢!明天我会试着检查一下我的情况。
  • 只是想知道,如果我有 ComponentRef 而不是通常的 Component,我该怎么办?谁的解决方案相同?我的意思是在step 3 中的代码中添加一个条件
  • 如果你不能修改 元素本身,你也可以在特性级别上做类似的条件。可以使用 STATEMENT 告诉该功能是否安装。如果您查看 wix 的 Condition 页面,则不能在 下使用它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多