Installation Wix#:如何将自定义UI决策绑定到实际安装步骤?

Installation Wix#:如何将自定义UI决策绑定到实际安装步骤?,installation,windows-installer,wixsharp,Installation,Windows Installer,Wixsharp,我们有两种安装模式:服务和应用 使用Wix#,我找不到一种方法向用户呈现这个简单的两个单选按钮对话框: Choose your installation: (*) App [default] ( ) Service 然后选择相应地部署/执行哪些文件(和操作) 我们如何将用户的决策与实际操作结合起来 编辑: 我最终发现了如何做到这一点,但仍然无法使GUI选择影响已部署的文件(尽管绑定属性确实发生了更改)。下面是一个新的更详细的问题: 注意:我不使用Wix 服务安装 同一个可执行文件?:可以确定

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

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

Choose your installation:
(*) App [default]
( ) Service
然后选择相应地部署/执行哪些文件(和操作)

我们如何将用户的决策与实际操作结合起来

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

注意:我不使用Wix

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

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

  • ()和()-如果使用正确,所有工作都可靠
  • -先前的答复
  • -(未经测试的WiX标记)
  • 另见
自定义操作:许多人使用自定义操作安装服务。这通常是一个错误(不必要、容易出错等)。我相信只有在某些情况下(如您所建议的),您才需要自定义操作来安装服务,除非您引用的二进制文件是两个不同的文件。自定义操作需要注册,然后启动服务。您还必须设置服务的引导行为


选择? 假设二进制是单个二进制,而不是两个不同的二进制:

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

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

安装模式

你可以通过功能来实现。该功能具有固定的文件列表,在MSI构建之前格式化。如果您添加了服务应用程序功能,则可以对要添加到目标文件夹中的文件进行计数

默认情况下,您的文件位于Complete功能名称中,因此您需要添加其他文件。以下是功能示例:

请添加您的,并使用ADDLOCAL参数设置要部署的。只需将其设置为单选按钮,然后单击:

session[“ADDLOCAL”]=“Feature1,Feature2,”
警告:进行更新时,需要设置以前的功能名称

GUI安装流程

如果我需要使一些拆分的表单流动,我只需在行中添加两个对话框序列,并使用我的JumpTo方法进行ManagedForm:

//
/// Переход к форме определенного типа.
/// 
/// Тип формы.
公共布尔跳到(类型dialogType)
{
int index=Shell.Dialogs.IndexOf(dialogType);
如果(指数<0)
{
返回false;
}
BeginInvoke(新操作(()=>Shell.GoTo(索引));
返回true;
}

之后,我需要控制第一个和最后一个表单的行为,以便跳转到正确的对话框。

应该读得更好,下面是假设WiX。?(下图)。也许我误解了整个问题?@SteinÅsmul-这个问题主要是关于如何创建UI,然后如何使用用户的选择来控制安装流程。感谢您提供的描述性答案!然而,问题是关于Wix#,主要是关于如何创建UI并使用其结果控制安装流程。是的,但是如果您想在两种模式下运行相同的二进制文件,您将面临安装范例的问题。