Error - Cannot install service to Windows C#
Exception occurred while initializing the installation: System.IO.FileNotFoundException: Could not load file or assembly 'X' or one of its dependencies. The system cannot find the file specified...
The Error
The Solution
Rujuk ni : Developer Command Prompt for Visual Studio
Why can't I install my windows service - Specified service already exists
Create services installer
Here is my brief steps how to create service with installer:
- Run Visual Studio, Go to File
->
New->
Project - Select .NET Framework 4, in 'Search Installed Templates' type 'Service'
- Select 'Windows Service'. Type Name and Location. Press OK.
- Double click Service1.cs, right click in designer and select 'Add Installer'
- Double click ProjectInstaller.cs. For serviceProcessInstaller1 open Properties tab and change 'Account' property value to 'LocalService'. For serviceInstaller1 change 'ServiceName' and set 'StartType' to 'Automatic'.
Double click serviceInstaller1. Visual Studio creates
serviceInstaller1_AfterInstall
event. Write code:private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e) { using (System.ServiceProcess.ServiceController sc = new System.ServiceProcess.ServiceController(serviceInstaller1.ServiceName)) { sc.Start(); } }
Build solution. Right click on project and select 'Open Folder in File Explorer'. Go to bin\Debug.
Create install.bat with below script:
::::::::::::::::::::::::::::::::::::::::: :: Automatically check & get admin rights ::::::::::::::::::::::::::::::::::::::::: @echo off CLS ECHO. ECHO ============================= ECHO Running Admin shell ECHO ============================= :checkPrivileges NET FILE 1>NUL 2>NUL if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges ) :getPrivileges if '%1'=='ELEV' (shift & goto gotPrivileges) ECHO. ECHO ************************************** ECHO Invoking UAC for Privilege Escalation ECHO ************************************** setlocal DisableDelayedExpansion set "batchPath=%~0" setlocal EnableDelayedExpansion ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs" ECHO UAC.ShellExecute "!batchPath!", "ELEV", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs" "%temp%\OEgetPrivileges.vbs" exit /B :gotPrivileges :::::::::::::::::::::::::::: :START :::::::::::::::::::::::::::: setlocal & pushd . cd /d %~dp0 %windir%\Microsoft.NET\Framework\v4.0.30319\InstallUtil /i "WindowsService1.exe" pause
- Create uninstall.bat file (change in pen-ult line
/i
to/u
) - To install and start service run install.bat, to stop and uninstall run uninstall.bat
Ulasan