c# - 在安装过程中使用 InstallUtil.exe 命令安装 Windows 服务
问题描述
我有一个Console Application
项目Visual Studio Solution
。此应用程序(此处称为 semplicity MyApplication.exe)只不过是 WCF 服务的主机。
我需要一个安装程序来在目标机器上安装我的应用程序,所以我下载了Microsoft Visual Studio Installer Projects
扩展程序。我收集了所有要复制到应用程序文件夹中的文件,但我希望安装程序甚至将我的服务注册为 Windows 服务。
为此,我导入了InstallUtil.exe
如下图所示的内容。我创建了嵌套的额外文件夹(Windows 文件夹 -> Microsoft.NET -> Framework64 -> v4.030319)以反映目标环境的实际结构。
然后我在节点Custom Action
下创建了这样的:Commit
与以下Arguments:
“[TARGETDIR]MyApplication.exe”
我尝试了生成的设置,我注意到所有文件都已复制但未安装服务(我在 MSC 列表中没有看到它)。
所以,在我的问题下面:
- 我在哪里做错了什么?
- 有什么我可以检查的日志吗?
- 如果之前已经安装了该服务,我可以通过哪种方式卸载该服务?
- 坦率地说,我期待一些更可定制的东西。例如,与我的应用程序相关的附加复选框或用户可以在安装时管理的东西。如果我的
App.config
包含 KeyValue [Server="localhost"] 有没有办法在安装时自定义它,并向用户弹出一个窗口:“你的服务器在哪里?”并使用用户提示的信息更新我的配置文件?
解决方案
也许这对处于类似情况的人有用。
使用语句
using System.Configuration.Install;
安装
ManagedInstallerClass.InstallHelper(new[] { Assembly.GetExecutingAssembly().Location });
卸载
ManagedInstallerClass.InstallHelper(new[] { "/u", Assembly.GetExecutingAssembly().Location });
上面处理了您提到的 InstallUtil 的功能。
文档
ManagedInstallerClass.InstallHelper
该实用程序位于以下位置:
Windows 系统上的 .NET 目录:
- C:\Windows\Microsoft.NET\Framework\v\InstallUtil.exe
- C:\Windows\Microsoft.NET\Framework64\v\InstallUtil.exe
InstallUtil.exe 由 Microsoft 进行数字签名。
推荐阅读
- c# - 默认 AspCore 重置令牌包含非法字符?
- android - 我们无法保存您的更改。请再试一次。- 将 apk 上传到 Google Play 时出现错误消息
- api - azure DevOps API 未返回 WorkItems 的所有字段
- javascript - 为什么我们在使用方法之前要添加 req.user 对象?
- python - 覆盖父命名空间变量
- react-native - expo sdk 22 和 36 有哪些最小的 android 和 ios 版本?
- python - 如何在python中访问嵌套字典的内容
- postgresql - 如何为具有用户设置列的表设计数据库结构
- ansible - 如何在 Aruba 8320 交换机上进入管理员模式?
- javascript - 在页面刷新时将滚动反应到顶部 - 不要恢复位置