VS Setup - 关于Windows Service

本文介绍如何使用VSSetup项目创建Windows Service安装包,并在安装过程中自动启动该服务。主要涉及使用ServiceInstaller组件进行安装配置及通过CustomAction实现安装后的服务启动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面写过一篇使用VS Setup项目作安装包的总结 ,今天补充两点关于打包Windows Service的tips:

1. 如何安装windows service? - 使用service installer

2. 如何在安装向导完成后,启动刚安装完成的service?

   2.1 使用Custom Action并在Installer的Committed事件中启动service

   2.2 将此Custom Action 添加到安装项目的Custom Actions 编辑器的Commit节中

Custom Action代码示例如下:

Imports System.Configuration.Install
Imports System.ServiceProcess
Imports System.ComponentModel

<RunInstaller(True)> _
Public Class CustomActionManager
    Inherits Installer
    Private Const Service_Name As String = "MyService"

    Public Sub New()
        MyBase.New()

        AddHandler Committed, AddressOf CustomActionManager_Committed
    End Sub

    Private Sub CustomActionManager_Committed(ByVal sender As Object, ByVal e As InstallEventArgs)
      
        'need to put this custom action under the Commit section of Setup -> Custom Actions wizard
        Dim svcController As New ServiceController(Service_Name)
        Try
            svcController.Start()
        Catch ex As Exception
            MsgBox("failed to start service " + Service_Name)
        Finally
            svcController.Dispose()
        End Try
    End Sub

End Class

### SQL Server Management Studio (SSMS) 安装时 DLL 文件缺失问题解决方案 当遇到 SSMS-Setup-CHS.exe 运行时报错提示缺少某些 DLL 文件的情况,通常是因为系统环境配置不完整或者依赖项未正确安装。以下是详细的解决方法: #### 1. 检查并更新 .NET Framework 版本 SQL Server Management Studio 需要特定版本的 .NET Framework 才能正常运行。如果当前系统的 .NET Framework 不满足最低要求,则可能导致程序无法加载必要的 DLL 文件。 建议访问 Microsoft 的官方网站下载最新版 [.NET Framework](https://dotnet.microsoft.com/download/dotnet-framework),确保已安装至少支持 SSMS 要求的框架版本[^2]。 #### 2. 安装 Visual C++ Redistributable Packages 许多应用程序(包括 SSMS)都依赖于 Visual C++ 库中的动态链接库文件。如果这些包未被完全安装或损坏,可能会引发类似的错误消息。 可以从以下官方页面获取适用于不同操作系统的 Visual C++ 可再发行组件集合: - [Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) 完成安装后重新尝试执行 `SSMS-Setup-CHS.exe`。 #### 3. 使用 SFC 工具扫描修复受损系统文件 有时操作系统本身的文件可能已经遭到破坏从而影响到外部软件的行为表现。可以利用 Windows 自带的 **System File Checker** 命令来查找和替换有问题的核心保护文件。 具体步骤如下所示: ```cmd sfc /scannow ``` 此命令会自动检测是否有任何丢失或篡改过的受保护资源,并试图恢复它们至原始状态[^3]。 #### 4. 清理临时目录与缓存数据 长期使用计算机过程中会产生大量无用甚至干扰性的垃圾资料存储在磁盘上。特别是像 `%temp%`, `\Windows\Temp` 等位置容易堆积过多不必要的项目进而阻碍新进程顺利启动。 手动删除上述路径下的无关内容后再试一次安装过程应该能够改善状况[^1]。 --- ### 提供一段示例代码用于验证服务账户设置是否正确 下面给出了一段 PowerShell 脚本来帮助确认 MSSQLSERVER 是否正在以合适的权限级别运作。这一步骤对于排除登录失败引起的异常同样重要。 ```powershell # 获取指定名称的服务对象实例 $service = Get-WmiObject Win32_Service -Filter "Name='MSSQLSERVER'" if ($null -ne $service){ Write-Output ("Current startup type is:" + $service.StartMode) if($service.StartName -notmatch 'LocalSystem'){ # 修改为本地系统账号模式 Set-Service -Name "MSSQLSERVER" -StartupType Automatic Restart-Service -Name "MSSQLSERVER" Write-Warning "Restarted service with new credentials." } } else { Throw "Failed to locate the target database engine instance!" } ``` 通过以上措施基本可以处理大部分由缺乏必要组件所造成的兼容性难题。当然,在实际操作前最好先备份好现有配置以防万一出现问题难以回滚更改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值