首页 > 解决方案 > Wix#:如何将自定义 UI 决策绑定到实际安装步骤?

问题描述

我们有两种安装模式:服务和应用。

使用 Wix#,我找不到向用户展示这个简单的两个单选按钮对话框的方法:

Choose your installation:
(*) App [default]
( ) Service

然后选择相应地部署/执行哪些文件(和操作)。

我们甚至如何将用户的决定与实际操作绑定?

编辑:

我最终发现了如何做到这一点,但仍然无法使 GUI 选择影响部署的文件(尽管绑定的属性确实发生了变化)。这是新的更详细的问题:

属性似乎根据用户的选择而改变,但未部署条件文件

标签: installationwindows-installerwixsharp

解决方案


注意:我不使用 Wix#。

服务安装

相同的可执行文件?: 可以肯定的是,这是可以作为应用程序和服务运行的相同可执行文件吗?(我实际上做了一个能够做到这一点的应用程序,但效果不太好)。

服务安装:作为服务的安装通常是通过内置的 MSI 结构完成的(我相信你已经知道了,这只是为了参考和完整性):

自定义操作:许多人使用自定义操作来安装服务。这通常是MSI 反模式(不必要、容易出错等)。我相信您仅在某些情况下需要自定义操作来安装服务 - 就像您建议的那样 - 除非您引用的二进制文件是两个不同的文件。自定义操作需要注册然后启动服务。您还必须设置服务的引导行为。


备择方案?

假设二进制文件是单个二进制文件而不是两个不同的二进制文件:

两个 MSI:编译两个 MSI 文件来完成两个不同的任务是否可以接受?您将有一个 MSI 来安装服务版本,而一个 MSI 来安装应用程序版本?安装一个或另一个,确保安装目标不同(因此 MSI 引用计数不会干扰 - 这也允许同时安装 MSI)。您可以使用 setup.exe 包来安装其中一个吗?

Full Monty:我想你可以同时安装两份二进制文件,并将一份注册为服务。那么你需要询问用户是否启动服务?这将是一个自定义操作来设置服务是在启动时自动启动还是手动启动或立即启动等等......?或者,您是否可以始终注册并作为服务运行,并允许应用程序也以交互方式运行?穿线?


推荐阅读