首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WiX工具集:如何根据在同一个包中的早期安装程序中所做的选择来运行包中的安装程序?

WiX工具集:如何根据在同一个包中的早期安装程序中所做的选择来运行包中的安装程序?
EN

Stack Overflow用户
提问于 2021-09-22 10:52:18
回答 1查看 61关注 0票数 0

我正在尝试实现的是一种方法,如果用户选择安装需要第三方依赖项的软件组件,则只在捆绑包中安装特定的第三方依赖项。

我们更具体的用例:在捆绑包中,我们首先为我们自己的软件运行一个自定义安装程序,其中用户选择他们需要的功能。用户可以选择安装一个使用激光扫描仪来检测事物的软件。如果用户确实选择了该选项,则应稍后在捆绑包中安装第三方激光扫描仪配置器软件。

到目前为止,我尝试的是在Bundle元素中添加以下util:FileSearch元素:

代码语言:javascript
复制
<util:FileSearch Id="CheckOurSoftwareExists"
                 Path="[WindowsVolume]\Company\Software\OurSoftware\OurSoftware.exe"
                 Variable="OURSOFTWAREEXISTS"
                 Result="exists" />

并在Chain元素内的ExePackage元素中使用它:

代码语言:javascript
复制
<ExePackage Id="LaserScannerConfiguratorInstaller"
            SourceFile="3rd-party-installers\path\to\laser-scanner-configurator-installer.exe"
            InstallCondition="OURSOFTWAREEXISTS" />

这不起作用,因为util:FileSearch应该在任何捆绑的安装程序启动之前就已经执行了。即使在启动第三方安装程序之前评估InstallCondition属性,变量OURSOFTWAREEXISTS之前也已经被赋予了一个值。

那么,对于这个问题有哪些解决方法呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-22 16:53:10

使用MSI Native UI仍然是问题的核心。WiX开发团队不建议这样做。

如果禁用本机MSI UI并让用户在引导程序UI中进行选择,则可以将其用作安装EXE包或不安装EXE包的条件,并将该属性传递给MSI以控制安装哪些功能。

否则,我怀疑您必须编写一个自定义引导程序应用程序,该应用程序在安装MSI之后重新评估属性,并重新启动要安装的包。

我认为一个快速丑陋的技巧是为EXE编写一个自定义的EXE包装器,该包装器读取机器以查看是否安装了该功能,并选择调用真正的EXE或不安装它而退出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69282789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档