【问题标题】:Creating an single installer of a solution with WPF as start up project and depend on Windows Service使用 WPF 作为启动项目并依赖于 Windows 服务创建解决方案的单个安装程序
【发布时间】:2019-04-08 16:50:54
【问题描述】:

问类似的问题,因为没有人回答上一个问题

我有一个包含类库项目、WPF 项目(启动项目)和 Windows 服务项目的解决方案。我想创建一个安装程序,以便在用户安装应用程序时同时安装 WPF (UI) 和 Windows 服务。

我在网上找到的大多数资源都只讨论一个或另一个,而不是两者。例如this:

我检查了有关 stackoverflow 的一些问题,但要么没有得到任何答案,要么答案很模糊,例如 this questionthis one

有什么建议可以实现吗?

【问题讨论】:

标签: c# wpf windows-services


【解决方案1】:

我不是各种安装程序解决方案方面的专家,但是可以。我知道,因为我的项目做到了。

我们过去一直使用InstallShield,但出于与本次讨论无关的原因,我们正在积极转向InstallAware。坦率地说,我怀疑任何安装程序解决方案(例如,InstallShield、InstallAware、Wix 等)都可以用来执行此操作,前提是它能够在安装过程中执行批处理脚本(稍后会详细介绍) .事实上,当我们使用 InstallAware 构建新的安装程序时,我们正在使用 WinZip 自解压可执行文件临时交付基于 WPF 的应用程序和 Windows 服务。 WinZip 自解压器将 WPF 应用程序放在 C:\Program Files\\ 文件夹中,将 Windows 服务放在 C:\Program Files\\Common 文件夹,然后安装并启动 Windows 服务。

所有这一切的诀窍当然是安装 Windows 服务。最初,我们使用 InstallUtil.exe 实用程序来执行此操作,但我们不得不谨慎行事并使用我们的安装程序交付它,因为我们无法验证是否我们是否可以依赖目标系统上可用的实用程序。在此过程中的某个时候,我读到了@Marc Gravellthis 答案。这为我的回答 here 提供了跳板,它提供了从命令行安装 Windows 服务的详细说明,而无需 InstallUtil.exe。。 p>

所以作为一组指令...

  1. 根据详细信息 here 更新您的 Windows 服务。
  2. 使用以下命令创建一个 .bat 文件:

    cd
    .exe -install

  3. 为您的 WPF 服务和 Windows 服务构建安装程序。请注意,这应该侧重于将文件部署到正确的位置。您需要将 .bat 文件包含在安装程序中。如果您的安装程序解决方案允许您将文件复制到在安装过程结束时被删除的临时文件夹,请将 .bat 文件复制到该位置,因为安装程序完成后您将不再需要它。

  4. 最后,在安装过程中执行安装程序中的 .bat 文件。这将安装 Windows 服务。

考虑到所有事情真的没有那么复杂。

需要注意的一件事是您的用户应该计划以管理员身份运行安装程序。由于安装 Windows 服务会更新注册表,因此没有管理权限的用户在尝试安装您的产品时可能会遇到问题。

HTH

【讨论】:

  • 感谢@Matt,这正是我想要的。如果有新发现,我会按照这些步骤通知您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-28
  • 2019-06-08
  • 2012-05-19
  • 2010-12-07
  • 1970-01-01
  • 2019-09-09
  • 1970-01-01
相关资源
最近更新 更多