0

我应该如何从我的 WinForms 应用程序安装我的 Windows 服务?我读到的所有内容都说“使用 InstallUtil.exe,等等等等……”,但他们忘记了一件事……在我了解 InstallUtil.exe 的这些年里,没有一台计算机安装过它。我总是不得不下载 InstallUtil.exe ,然后用它来安装我的服务。

仅仅为了能够安装您的服务而要求客户/客户做这件事确实是不可接受的。那么 Chrome、Opera 等如何安装它们的服务呢?现在,在一台全新的 PC 上,我没有 Install Util,而且我打赌 90% 的人(非程序员)也没有。那么,除了 .NET 框架中已经提供的资源之外,如何在不需要任何第三方或外部资源的情况下从 winforms 应用程序安装我的 Windows 服务?


我已尝试以 MSDN 文章中有关创建 Windows 服务的正常方式安装它,但它总是失败,没有任何有意义的原因:

C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release>Ins tallUtil.exe "Heartbeat Monitor.exe" Microsoft (R) .NET Framework 安装实用程序版本 4.0.30319.33440 版权所有 (C)微软公司。版权所有。

运行事务安装。

开始安装的安装阶段。查看 C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe 程序集进度的日志文件内容。

该文件位于 C:\Users\Jason\Documents\Visual Studio 2015\Projects\Note s\Notes\bin\Release\Heartbeat Monitor.InstallLog。安装程序集“C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\ Notes\bin\Release\Heartbeat Monitor.exe”。受影响的参数是:logtoconsole = assemblypath = C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Not es\bin\Release\Heartbeat Monitor.exe logfile = C:\Users\Jason\Documents\Visual Studio 2015 \Projects\Notes\Notes\bin\Release\Heartbeat Monitor.InstallLog

安装阶段发生异常。System.ArgumentOutOfRangeException:索引和长度必须引用字符串中的位置。参数名称:长度

安装的回滚阶段即将开始。查看 C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe 程序集进度的日志文件内容。

该文件位于 C:\Users\Jason\Documents\Visual Studio 2015\Projects\Note s\Notes\bin\Release\Heartbeat Monitor.InstallLog。回滚程序集 'C:\Users\Jason\Documents\Visual Studio 2015\Projects\Note s\Notes\bin\Release\Heartbeat Monitor.exe'。受影响的参数是:logtoconsole = assemblypath = C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Not es\bin\Release\Heartbeat Monitor.exe logfile = C:\Users\Jason\Documents\Visual Studio 2015 \Projects\Notes\Notes\bin\Release\Heartbeat Monitor.InstallLog

回滚阶段成功完成。

事务安装已完成。安装失败,已回滚。

C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release>

InstallLog文件是:

安装程序集“C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe”。受影响的参数是:logtoconsole = assemblypath = C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe logfile = C:\Users\Jason\Documents\Visual Studio 2015\ Projects\Notes\Notes\bin\Release\Heartbeat Monitor.InstallLog 回滚程序集 'C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe'。受影响的参数是:logtoconsole = assemblypath = C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe logfile = C:\Users\Jason\Documents\Visual Studio 2015\项目\Notes\Notes\bin\Release\Heartbeat Monitor。InstallLog 安装程序集“C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe”。受影响的参数是:logtoconsole = assemblypath = C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe logfile = C:\Users\Jason\Documents\Visual Studio 2015\ Projects\Notes\Notes\bin\Release\Heartbeat Monitor.InstallLog 回滚程序集 'C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe'。受影响的参数是:logtoconsole = assemblypath = C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe logfile = C:\Users\Jason\Documents\Visual Studio 2015\项目\Notes\Notes\bin\Release\Heartbeat Monitor。InstallLog 在 System.ServiceProcess.ServiceProcessInstaller 安装程序的回滚阶段发生异常。System.NullReferenceException:对象引用未设置为对象的实例。在安装的回滚阶段发生异常。此异常将被忽略,回滚将继续。但是,回滚完成后,机器可能不会完全恢复到其初始状态。安装程序集“C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe”。受影响的参数有:logtoconsole = assemblypath = C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe logfile = C: \Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.InstallLog 回滚程序集 'C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\释放\心跳监视器.exe'。受影响的参数是:logtoconsole = assemblypath = C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe logfile = C:\Users\Jason\Documents\Visual Studio 2015\ Projects\Notes\Notes\bin\Release\Heartbeat Monitor.InstallLog System.ServiceProcess.ServiceProcessInstaller 安装程序的回滚阶段发生异常。System.NullReferenceException:对象引用未设置为对象的实例。在安装的回滚阶段发生异常。此异常将被忽略,回滚将继续。但是,回滚完成后,机器可能不会完全恢复到其初始状态。安装程序集“C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe”。受影响的参数是:logtoconsole = assemblypath = C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe logfile = C:\Users\Jason\Documents\Visual Studio 2015\ Projects\Notes\Notes\bin\Release\Heartbeat Monitor.InstallLog 回滚程序集 'C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe'。受影响的参数是:logtoconsole = assemblypath = C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe 日志文件 = C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\ Heartbeat Monitor.InstallLog 安装程序集“C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe”。受影响的参数是:logtoconsole = assemblypath = C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe logfile = C:\Users\Jason\Documents\Visual Studio 2015\ Projects\Notes\Notes\bin\Release\Heartbeat Monitor.InstallLog 安装服务 Heartbeat Monitor... 在日志中创建 EventLog 源 Heartbeat Monitor Application... 回滚程序集 'C: \Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe'。受影响的参数是:logtoconsole = assemblypath = C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe logfile = C:\Users\Jason\Documents\Visual Studio 2015\ Projects\Notes\Notes\bin\Release\Heartbeat Monitor.InstallLog 将事件日志恢复到源 Heartbeat Monitor 的先前状态。安装程序集“C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe”。受影响的参数有:logtoconsole = assemblypath = C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe logfile = C: \Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.InstallLog 回滚程序集 'C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\释放\心跳监视器.exe'。受影响的参数是:logtoconsole = assemblypath = C:\Users\Jason\Documents\Visual Studio 2015\Projects\Notes\Notes\bin\Release\Heartbeat Monitor.exe logfile = C:\Users\Jason\Documents\Visual Studio 2015\ Projects\Notes\Notes\bin\Release\Heartbeat Monitor.InstallLog

任何帮助将不胜感激。我完全迷失在这里。不知道为什么服务如此难以安装,即使按照 T 的说明进行操作也是如此。

4

0 回答 0