繁体   English   中英

WiX安装程序和自定义操作

[英]WiX installer and custom actions

我有一个不太简单的Windows服务(C#)的应用程序。 我使用Visual Studio 2008创建了一个安装程序,它完成了在客户端计算机上安装服务的工作,但使用Visual Studio部署项目有两个缺点:

  1. 我似乎无法使用MSBuild构建安装程序(我已经尝试过DevEnv.exe方法)。 该服务是一个更大的项目的一小部分,我希望MSI文件的构建与我的构建同时发生。 我已将WiX用于其他安装程序,但此特定应用程序需要在设置中进行配置步骤。
  2. 安装Windows服务时,VS 2008的部署项目似乎存在错误。 在修复和升级时,服务永远不会停止。 (由RemoveExistingProducts的无效序列引起 - 我通过将序列更改为1525来解决此问题)

VS2008部署项目的优点在于我创建了一个自定义操作,显示一个表单,该表单从用户获取一些信息,连接到WCF服务,该服务检索数据并将其存储在本地计算机上的加密数据存储中以供服务。

现在,我看起来又高又低,我不认为这可能与WiX有关。 程序安装后运行EXE并不“好”。 我希望能够在我的自定义操作DLL中调用一个显示表单的方法,并进行所需的处理。 有没有办法用WiX做到这一点? - 甚至在WiX中创建一个自定义GUI,获取值并将这些值传递给方法进行处理

所以,问题:

  1. 这可能与WiX有关吗?
  2. 如果不是,我有什么选择?

非常感谢

你绝对可以使用WiX安装和启动服务 - 我每天都在这样做,每天:-)

查看ServiceInstallServiceControl元素(如果您需要指定甚至更多,还有更多元素)。

基本上,您需要首先将服务文件(YourService.exe)定义为组件中的文件,然后除此之外还需要指定ServiceInstall(以及可能的ServiecControl)元素。

<Component Id='YourServiceComponent' Guid='.....' DiskId='1'>
  <File Id='YourServiceEXEFile' Name='YourService.exe' 
        src='(path to your EXE)/YourService.exe' KeyPath='yes'/>
  <ServiceInstall Id='YourServiceInstall' Name='YourServiceName' 
                  Description='.....' ErrorControl='normal' 
                  Start='auto' Type='ownProcess' Vital='yes' />
  <ServiceControl Id='UninstallYourService' Name='YourServiceName' 
                  Remove='uninstall' Wait='yes' />
</Component>

然后,您需要将此组件添加到正在安装的安装中的某个功能 - 这就是它!

问题#1的答案是肯定的,但它有点牵扯。 您可以定义对话框以使用UI元素从用户收集信息并存储其会话属性。 您可以使用Publish元素将这些对话框插入到流中。 然后,您可以创建一个vb脚本CustomAction,并使用这些会话属性执行任何操作。 查看本教程了解更多信息。

关于WiX服务控制节点的注意事项:

如果您的服务依赖于安装程序在GAC中放置的程序集,那么它将无法启动。 出于某种原因,WiX会在将程序集发布到GAC之前调度StartService操作,因此如果是这种情况,则需要编写自定义操作来启动该服务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM