问题标签 [service-installer]
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.
f# - 安装 Windows 服务时出错(在 F# 中)
我的问题如下:当我尝试安装 Windows 服务时,出现以下错误:
片段:
...
No public installers with the RunInstallerAttribute.Yes attribute could be found in the <path to exe> assembly.
...
我按照这个教程
我有一个Program.fs
文件包含:
这应该足够了,事实上,我什至认为我不需要将public
关键字添加到类型定义中。安装这个可执行文件InstallUtil.exe
给了我与使用以下代码安装它相同的错误:
我曾尝试以管理员和我的普通帐户在 PowerShell、cmd 和 Visual Studio CLI 中运行此脚本,但我一直收到相同的错误。如果有人知道我做错了什么,我将非常感谢一些帮助。
.net - 为什么 .NET 在安装服务时为服务 ImagePath 添加额外的引号
在安装系统服务时,我遇到了 .NET 非常奇怪的行为。
我在OnBeforeInstall方法中添加了 2 个日志记录调用。这是它在输入方法时显示的内容:
这是它在OnBeforeInstall方法末尾显示的内容:
但这是为该服务的ImagePath属性真正安装的内容:
因此,由于未知原因,它被包含在额外的双引号中!但为什么?以及如何解决这个问题?
我已经尝试用双引号将参数括起来:
那没有帮助。
我试图不用双引号括起来任何东西:
那也没有帮助。
为什么它很重要:因为当ImagePath包含这样额外的双引号时,我无法启动服务,因为错误:
我试图解决这个问题,但没有找到任何解释。
也是一个值得思考的问题- 为什么.NET 框架设计中存在这样的概念差距,它不允许使用某种标准方式指定服务StartParameters ?因此,程序员必须在Context中使用带有“AssemblyPath”参数的技巧。
先感谢您。
PS。它是 .NET 3.5 服务应用程序。添加服务StartParameter - 这是由我在代码中完成的。问题不在于添加StartParameter本身。问题是 - 为什么 .NET 框架在那里添加额外的双引号?以及如何避免这种情况?
聚苯乙烯。是的,我知道我可以编写一段代码来打开注册表项并修改ImagePath值,但我想避免使用这种肮脏的方法,如果可能的话,我想用 .NET 的标准和简单功能来做所有事情服务安装程序。有可能吗?
解决方法:我实现了一个技巧 - 在assemblypath之后添加一个引号,在参数之前添加一个引号,所以现在在日志输出中OnBeforeInstall方法的末尾,我看到以下内容:
考虑到 .NET 将在此类ImagePath值周围添加引号后,它将成为exe + parameters 的正确值。正如我所看到的,这种解决方法效果很好。但我很担心——如果这个在 .NET 中带有额外引号的 bug 将来会被修复怎么办?
c# - 本地计算机上已存在源
我需要构建一个 Windows 服务来监视“主”应用程序。所以,我搜索了很多,找到了开始使用服务所需的代码。
我对安装程序的唯一更改是描述、显示名称、服务名称和启动类型设置为manual
. 这是安装
Microsoft (R) .NET Framework 安装实用程序版本 4.6.1586.0 版权所有 (C) Microsoft Corporation。版权所有。
运行事务安装。
开始安装的安装阶段。查看 E:\Dev\ZBMS 1.0\ZBMS.Checks\bin\Debug\ZBMS.Checks.exe 程序集进度的日志文件内容。该文件位于 E:\Dev\ZBMS 1.0\ZBMS.Checks\bin\Debug\ZBMS.Checks.InstallLog。安装程序集“E:\Dev\ZBMS 1.0\ZBMS.Checks\bin\Debug\ZBMS.Checks.exe”。受影响的参数有:logtoconsole = logfile = E:\Dev\ZBMS 1.0\ZBMS.Checks\bin\Debug\ZBMS.Checks.InstallLog 汇编路径 = E:\Dev\ZBMS 1.0\ZBMS.Checks\bin\Debug\ZBMS.Checks .exe 正在安装服务 ZBMS... 服务 ZBMS 已成功安装。在日志应用程序中创建 EventLog 源 ZBMS...
安装阶段发生异常。System.ArgumentException:源 ZBMS 已存在于本地计算机上。
安装的回滚阶段即将开始。查看 E:\Dev\ZBMS 1.0\ZBMS.Checks\bin\Debug\ZBMS.Checks.exe 程序集进度的日志文件内容。该文件位于 E:\Dev\ZBMS 1.0\ZBMS.Checks\bin\Debug\ZBMS.Checks.InstallLog。回滚程序集 'E:\Dev\ZBMS 1.0\ZBMS.Checks\bin\Debug\ZBMS.Checks.exe'。受影响的参数有:logtoconsole = logfile = E:\Dev\ZBMS 1.0\ZBMS.Checks\bin\Debug\ZBMS.Checks.InstallLog 汇编路径 = E:\Dev\ZBMS 1.0\ZBMS.Checks\bin\Debug\ZBMS.Checks .exe 将事件日志恢复到源 ZBMS 的先前状态。服务 ZBMS 正在从系统中删除... 服务 ZBMS 已成功从系统中删除。
回滚阶段成功完成。
事务安装已完成。安装失败,已回滚。
我尝试了什么:
- 安装 Windows 服务时出现问题(ryber 的解决方案对我不起作用,因为 Visual Studio 找不到引用的方法
FindInstaller
)
我很难解决这个问题。
c# - Windows 服务中一个 ServiceProcessInstaller 中的多个 ServiceInstaller
我已将两个 ServiceInstaller 添加到我的 ServiceProcessInstaller。之后我改变了我的 Main() 如下:
我还将 Service2 设置为 Service1 的依赖服务,如下所示:
它仍然只运行我的Service1。
Service2 从不打电话。
如果我在 Main() 中更改序列,那么 Service2 只会调用。
它总是调用第一个服务。
如何调用我的两种服务?
visual-studio-2017 - Visual Studio 2017 安装程序项目在重新安装时要求系统重新启动
我有服务项目和 Visual Studio 2017 安装程序项目来安装它。如果我从“添加或删除项目”开始卸载,然后安装新版本 - 一切正常。如果我从 Visual Studio 开始安装 - 一切正常
但是如果使用资源管理器中的 msi 文件开始安装。安装程序要求我重新启动系统。如何避免这种情况?