installation - Wix#:如何将自定义 UI 决策绑定到实际安装步骤?
问题描述
我们有两种安装模式:服务和应用。
使用 Wix#,我找不到向用户展示这个简单的两个单选按钮对话框的方法:
Choose your installation:
(*) App [default]
( ) Service
然后选择相应地部署/执行哪些文件(和操作)。
我们甚至如何将用户的决定与实际操作绑定?
编辑:
我最终发现了如何做到这一点,但仍然无法使 GUI 选择影响部署的文件(尽管绑定的属性确实发生了变化)。这是新的更详细的问题:
解决方案
注意:我不使用 Wix#。
服务安装
相同的可执行文件?: 可以肯定的是,这是可以作为应用程序和服务运行的相同可执行文件吗?(我实际上做了一个能够做到这一点的应用程序,但效果不太好)。
服务安装:作为服务的安装通常是通过内置的 MSI 结构完成的(我相信你已经知道了,这只是为了参考和完整性):
ServiceControl Element
(MSI table
) 和ServiceInstall Element
(MSI table
) - 如果使用得当,可以可靠地完成所有工作- 如何使用 WiX 安装和启动 Windows 服务- 以前的答案
- 如何使用 WiX 创建 Windows 服务 MSI 安装程序- (未经测试的 WiX 标记)
- 另请参阅Chris Painter 的 IsWiX 教程。
自定义操作:许多人使用自定义操作来安装服务。这通常是MSI 反模式(不必要、容易出错等)。我相信您仅在某些情况下需要自定义操作来安装服务 - 就像您建议的那样 - 除非您引用的二进制文件是两个不同的文件。自定义操作需要注册然后启动服务。您还必须设置服务的引导行为。
备择方案?
假设二进制文件是单个二进制文件而不是两个不同的二进制文件:
两个 MSI:编译两个 MSI 文件来完成两个不同的任务是否可以接受?您将有一个 MSI 来安装服务版本,而一个 MSI 来安装应用程序版本?安装一个或另一个,确保安装目标不同(因此 MSI 引用计数不会干扰 - 这也允许同时安装 MSI)。您可以使用 setup.exe 包来安装其中一个吗?
Full Monty:我想你可以同时安装两份二进制文件,并将一份注册为服务。那么你需要询问用户是否启动服务?这将是一个自定义操作来设置服务是在启动时自动启动还是手动启动或立即启动等等......?或者,您是否可以始终注册并作为服务运行,并允许应用程序也以交互方式运行?穿线?
推荐阅读
- sql - Netezza:使用 SQL / force 生成完整的统计信息
- python - 如何在 matplotlib barh 图中更改宽度
- reactjs - 我的汇总配置在捆绑我的应用程序方面是否有效?
- mysql - 如何在 MySQL 中在数据集上方添加标头
- mongodb - 如何使用 MongoDB 拦截 Grails 中的连接事件
- assembly - 在 Windows 中将程序集与 ld 链接
- javascript - 如何在自定义对话框中使用“确定”按钮清除表单字段
- python - keras.Model 中 Input 的附加维度从何而来?
- class-validator - 类验证器:验证子类型:拒绝无效的鉴别器值,避免查看数组内部
- java - 如何在 Java 中反转 InputStream?