问题标签 [installutil]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1432 浏览

windows-services - Windows 服务中的自定义事件日志

在项目安装程序中,我正在创建一个自定义事件日志。但是当我的服务启动时,我的所有日​​志都将转到“应用程序”而不是我的自定义日志。以下是我添加到安装程序的代码。

此外,服务的名称是 MyService.exe。

当我卸载并重新安装服务时,安装失败并显示以下安装日志;

运行事务安装。

开始安装的安装阶段。查看 D:\MyService\MyService\bin\Release\MyService.exe 程序集进度的日志文件内容。该文件位于 D:\MyService\MyService\bin\Release\MyService.InstallLog。

安装阶段发生异常。System.ArgumentException:源 MyServices 已存在于本地计算机上。

安装的回滚阶段即将开始。查看 D:\MyService\MyService\bin\Release\MyService.exe 程序集进度的日志文件内容。该文件位于 D:\MyService\MyService\bin\Release\MyService.InstallLog。

回滚阶段成功完成。

事务安装已完成。

这就是我写日志条目的方式;

EventLog.WriteEntry("MyServices", logMessage, logType);

有人可以帮助我我做错了什么。

0 投票
1 回答
49 浏览

c# - 日志不会转到在 WindowsService 中创建的 CustomEventLog

我创建了一个 Windows 服务,我正在使用 installutil 安装它。在项目安装程序中,我正在创建一个自定义事件日志。但是当我的服务启动时,我的所有日​​志都将转到“应用程序”而不是我的自定义日志。以下是我添加到安装程序的代码。

此外,服务的名称是 MyService.exe。

当我卸载并重新安装服务时,安装失败并显示以下安装日志;

运行事务安装。

开始安装的安装阶段。查看 D:\MyService\MyService\bin\Release\MyService.exe 程序集进度的日志文件内容。该文件位于 D:\MyService\MyService\bin\Release\MyService.InstallLog。

安装阶段发生异常。System.ArgumentException:源 MyServices 已存在于本地计算机上。

安装的回滚阶段即将开始。查看 D:\MyService\MyService\bin\Release\MyService.exe 程序集进度的日志文件内容。该文件位于 D:\MyService\MyService\bin\Release\MyService.InstallLog。

回滚阶段成功完成。

事务安装已完成。

这就是我写日志条目的方式;

EventLog.WriteEntry("MyServices", logMessage, logType);

有人可以帮助我我做错了什么。

0 投票
1 回答
3120 浏览

c# - Windows 服务安装时出现 InvalidOperationException

我有一个几个月前开发的 Windows 服务应用程序,到目前为止,它在一个遥远的 Windows Server 2012 上运行完美。但是在一个小的更新之后,我不得不在服务器上重新安装它,现在,每次我尝试运行 InstallUtil这个服务器,我得到一个错误。这是完整的命令行对话框:

安装程序集'c:\Program Files\My Company\MyServiceApp\MyServiceApp.exe'。受影响的参数是:

logtoconsole =
程序集路径 = c:\Program Files\My Company\MyServiceApp\MyServiceApp.exe
日志文件 = c:\Program Files\My Company\MyServiceApp\MyServiceApp.InstallLog

正在安装服务 SendHistoryService...
服务 SendHistoryService 已成功安装。
在日志应用程序中创建 EventLog 源 SendHistoryService...
System.ServiceProcess.ServiceInstaller 的 OnAfterInstall 事件处理程序发生异常。
System.InvalidOperationException:无法在计算机“.”上启动服务 SendHistoryService。
引发内部异常 System.ComponentModel.Win32Exception 并显示以下错误消息:服务未及时响应启动或控制请求。
回滚程序集 'c:\Program Files\My Company\MyServiceApp\MyServiceApp.exe'。
受影响的参数是:

logtoconsole =
程序集路径 = c:\Program Files\My Company\MyServiceApp\MyServiceApp.exe
日志文件 = c:\Program Files\My Company\MyServiceApp\MyServiceApp.InstallLog

将事件日志恢复到源 SendHistoryService 的先前状态。
服务 SendHistoryService 正在从系统中删除...
服务 SendHistoryService 已成功从系统中删除。

请注意,服务安装程序仍然可以在我的本地计算机 (W8.1) 上完美运行。安装程序实际上包含两个独立的服务,称为“SendHistoryService”和“GeneratorService”,但是,如您所见,安装程序在尝试安装第一个时失败。如果它有任何相关性,该过程会在以下行卡住大约 30 秒:

当然,我检查的第一件事是 OnAfterInstall 事件处理程序,但那里似乎没有发生任何错误:

我真的无法理解这里发生了什么。有什么线索吗?

编辑:我尝试在 ProjectInstaller 类中注释启动服务的行。现在安装运行正常,但是当我尝试启动服务时,它失败了,我收到以下错误消息:

Windows 无法在本地计算机上启动 SendHistoryService 服务。

错误 1053:服务未及时响应启动或控制请求。

0 投票
0 回答
251 浏览

c# - installutil.exe 是否知道如何查找项目中引用的外部 DLL?

我正在尝试使用 installutil.exe 来安装 Windows 服务。我让它工作了,但后来我在项目中添加了一些外部 DLL,现在安装失败了。Copy local设置为真。外部 DLL 位于我的 Program Files 文件夹下的各种文件夹中。我以管理员身份打开 CMD 窗口。

将捕获代码放置在何处以获取该LoaderExceptions属性?在安装程序类中?

这是错误的第一部分:

0 投票
1 回答
309 浏览

c# - Windows 服务在安装到调试文件夹时启动然后停止

我有一个自托管 WCF 服务。它由 Windows 服务托管。我用installutil安装了它。所以在 bin 文件夹中我有两个文件夹 Debug 和 Release。当我在发布文件夹中安装 windowsservice 时,它​​照常启动并托管 WCF 服务,但是当我将它安装在调试文件夹中时,它不会启动。我收到此错误消息:

“本地计算机上的服务启动然后停止,如果没有被其他服务或程序使用,某些服务会自动停止。”

有人知道如何解决这个问题吗?

0 投票
1 回答
166 浏览

c# - 在 InstallUtil 工作流中捕获异常

在 C# 代码上,我在使用 installUtil 安装服务期间出错。我正在使用我自己的安装程序。安装程序上的所有代码和 installUtil 的参数都可以,因为安装在 90% 的情况下都可以正常工作。失败的场景是在我的 CI 工作下,我正在使用相同的代码并行安装多个服务,并且我无法捕获异常。我所拥有的只是日志中的以下消息:

System.Configuration.Install.AssemblyInstaller 安装程序的提交阶段发生异常。System.InvalidOperationException:集合已修改;枚举操作可能无法执行。在安装的提交阶段发生异常。此异常将被忽略,安装将继续。但是,安装完成后应用程序可能无法正常运行。

在我自己的安装程序类上,我已经在我能够覆盖的所有阶段和方法中放置了日志,我还获得了一些 System.Configuration.Install.Installer 的源代码,我也在那里记录,但什么也没有……

在 Install 方法之后和 Commit 之前发生异常。

就在 System.Configuration.Install.Installer 的 Commit 阶段执行之前,有一些带有此输出的代码:

日志如下:

安装阶段成功完成,提交阶段开始。查看日志文件的内容... Committing assembly .... 受影响的参数有:.... System.Configuration.Install.AssemblyInstaller 的 Commit 阶段发生异常... Commit 阶段成功完成。事务安装已完成。在安装的提交阶段发生异常。

如您所见,异常出现在 Install 阶段之后和 Commit 阶段之前,但在我的自定义 Installer 类或 System.Configuration.Install.Installer 的所有重写方法上都没有

谁能给我一些关于如何捕获此异常或更好地查看服务安装期间执行的完整工作流程的提示?

谢谢

0 投票
1 回答
857 浏览

c# - 在 C# 中使用 .exe 路径安装 Windows 服务

我需要以编程方式安装服务(它甚至可以使用 InstallUtil 完成,但不能手动完成)

我有以下代码,但无法弄清楚如何正确执行它,因为该代码要求提供一些我不知道的类信息,我需要知道如何使用它才能使用 .exe 执行它。代码如下:

0 投票
1 回答
445 浏览

windows-installer - _isconfig.xml 中 supportedRuntime 的值在 ManagedInstall 期间导致错误 1001

上个月(2016 年 3 月)我正在构建一个 InstallShield 2015 项目,其中的一个组件的.NET Installer Class属性设置为Yes,一切似乎都运行良好。这个月,我在运行相同的安装时突然开始收到错误 1001。看到错误来自这个.NET Installer Class组件,我决定关闭该.NET Installer Class属性作为测试。确实可以解决问题。但是我们有另一个构建系统,我们可以在其中构建完全相同的代码,并且一切正常,这表明存在环境问题。

经过一些额外的研究,我发现该文件在两个系统之间_isconfig.xml显示了不同的supportedRuntime version属性值,我认为这是一个密切相关的问题指标。额外的研究表明这个版本可能来自InstallUtilLib.dll,它确实与我在_isconfig.xml两个系统上看到的版本相匹配。安装工作正常<supportedRuntime version="v4.0.30319"/>,并失败<supportedRuntime version="v4.6.1055"/>。顺便说一句,较新InstallUtilLib.dll的日期为 2015-11-05,所以我猜这个问题理论上可能是自该日期以来任何更新的结果。

我看到我的系统最近安装了一些 .NET Framework 更新,但在 Google 搜索影响 .NET 的 Microsoft 更新时,我空手而归InstallUtilLib.dll。那么我如何确定这个问题以确定原因和/或解决方案呢?

MSI 日志报告如下错误:

0 投票
1 回答
19058 浏览

c# - Windows 服务中的 TCP IP 侦听器

我正在尝试创建一个需要在后台运行并侦听传入流量的 Windows 服务(普通和常规 TCP 侦听器)

我的代码是:

现在,如果您根本不查看工作方法,因为每当我启动我的服务时,每当我尝试在我的以下位置启动它时它都会冻结:

这意味着我的服务永远不会使用 Thread 或我的 Work 方法。我可以从以前的日志中看到它进入了我的 while 循环,然后只是让服务超时

0 投票
0 回答
61 浏览

c# - 如何在同一台机器上运行多个 .net 服务

我们有一个 .Net 服务,我们需要在同一台机器上运行不止一次。我的 exe 和支持文件位于 2 个不同的文件夹中:c:\folder1\ 和 c:\folder2\

但是,当我发出以下任一命令时,ServiceName 不会更改为我想要的:

如果没有创建服务,InstallUtil 将注册我的服务,但不会使用我指定的 serviceName。

如果服务已注册(例如 folder1 服务),则 InstallUtil 将在使用“指定服务已存在”注册的 folder2 上出错。

sc 命令仅显示 sc 命令的帮助信息,就好像我的语法错误一样。

在同一台机器上多次注册相同服务的正确方法是什么?