【发布时间】:2017-12-05 19:50:29
【问题描述】:
我正在使用https://github.com/kardianos/service 在我的 Go 项目中实现服务安装/启动/停止,因为我想将它作为守护进程运行。
这里的症结在于我想使用 Wix 之类的东西来为我的服务创建一个 msi 安装程序。我的问题是文档和网上的几篇文章似乎相互矛盾。
我将如何使用 Wix(或任何其他提供商)为我的服务创建安装程序?
【问题讨论】:
-
这真的取决于您的应用程序。我不确定 SO 是否是获取有关创建 Windows 安装程序包的分步教程的正确位置。
-
用 Go 编写的 Windows 服务与用任何其他语言编写的提供所谓“自托管”服务(即以一个可执行文件——而不是通过
svchost.exe托管的DLL文件)。所以你的问题与 Go 无关。阅读有关 WiX 的教程;特别是关于如何用它打包一个 Windows 服务。 -
还有一点是 WiX 很难(而 MSI 通常是),所以我建议先选择阻力最小的路径并使用InnoSetup 开始(这真的是不费吹灰之力),然后在您有这种感觉时继续使用 WiX。
-
我将从 IsWiX 开始。 (免责声明:我是这个 FOSS 项目的维护者。)它旨在为开发人员项目模板和图形设计师提供 99% 的 XML 创作。这是一个最小可行的产品概念,可以处理各种场景,但也允许在开发人员了解更多有关 WiX 的情况下手动创作 XML。欢迎贡献者协助编写其他设计器,以扩大 IsWiX 可以自动执行的范围。
-
在这个 2 分钟的视频中,我创建了一个 Windows 服务并使用 IsWiX/WiX 对其进行打包。 youtube.com/watch?v=bxbcPnjfzIc 一半的时间都花在了创建服务上,所以实际上创建 WiX 只需要 1 分钟。这里唯一不同的是告诉 SrvAny.exe 如何启动 go 应用程序所需的一行 XML (RegistryValue)。 IsWiX 确实让它很容易上手。
标签: wix windows-installer