Reputation: 35557
Just tried to run an application via the following:
I have browsed to the directory with an app WindowsService1.exe
in it, then tried the command Installutil WindowsService1.exe
but got the following error...
As VS has only been installed for a day or two I'm worried that something may be wrong with that install as it should recognise installutil.
Are there some basic diagnostics I can perform to ensure that VS Command Prompt is finding all the programs that it should ?
EDIT
If i run PATH
in the command prompt I see the following:
Upvotes: 71
Views: 131419
Reputation: 313
This is somewhat off-topic as it's for use in a C# program, not for command-line use. What we did was locate the InteropServices runtime directory at runtime, eliminating the need to add or use a Path variable. This directly gets the Microsoft.NET Framework utilities folder. Here's a method.
using System.Diagnostics;
public static void InstallService(string serviceExe, bool uninstall = false)
{
string installUtilPath = System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory() + "InstallUtil.exe";
Process installProc = new Process();
installProc.StartInfo.FileName = installUtilPath;
installProc.StartInfo.Arguments = (uninstall ? " /u " : string.Empty) + @"""" + serviceExe + @"""";
installProc.StartInfo.UseShellExecute = false;
installProc.StartInfo.RedirectStandardOutput = true;
installProc.StartInfo.RedirectStandardError = true;
installProc.StartInfo.CreateNoWindow = true;
installProc.Start();
installProc.WaitForExit();
Debug.WriteLine(installProc.StandardOutput.ReadToEnd());
if (installProc.ExitCode != 0)
{
throw new Exception($"Failed to install service: {serviceExe}. Exit code: {installProc.ExitCode}\n Review {serviceExe}.InstallLog for details.\n" +
$" Utility path: {installUtilPath}.");
}
}
Upvotes: 1
Reputation: 17522
This is a tiny bit off-topic but I've stopped using InstallUtil to install my services. It's is really easy to just add it to the service itself. Add a reference to System.Configuration.Install
(not available in the Client Profile editions if I remember right) and then update your Main()-function in Program.cs like this.
static void Main(string[] args) {
if (Environment.UserInteractive) {
var parameter = string.Concat(args);
switch (parameter) {
case "--install":
ManagedInstallerClass.InstallHelper(new[] { Assembly.GetExecutingAssembly().Location });
break;
case "--uninstall":
ManagedInstallerClass.InstallHelper(new[] { "/u", Assembly.GetExecutingAssembly().Location });
break;
}
} else {
ServiceBase[] servicesToRun = {
new Service1()
};
ServiceBase.Run(servicesToRun);
}
}
Then you can just call WindowsService1.exe
with the --install
argument and it will install the service and you can forget about InstallUtil.exe
.
Upvotes: 146
Reputation: 51
Just add the installUtil.exe
path in the environment variable to fix this issue.
Example:
C:\Windows\Microsoft.NET\Framework\v4.0.30319
Upvotes: 5
Reputation: 41
Before Installing service using command line...
use 2 steps:
Upvotes: 4
Reputation: 837
Add this in windows Environmental variables
First: Right click on My computer or This PC
Second: Click on Environmental Variables
Third: add this path after clicking on path
C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe
Upvotes: 1
Reputation: 4111
According Microsoft Page :
If you’re using the Visual Studio command prompt,
InstallUtil.exe
should be on the system path. If not, you can add it to the path, or use the fully qualified path to invoke it. This tool is installed with the .NET Framework, and its path is :
%WINDIR%\Microsoft.NET\Framework[64]\
For example, for the 32-bit version of the .NET Framework 4 or 4.5.*, if your Windows installation directory is C:\Windows, the path is :
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe
For the 64-bit version of the .NET Framework 4 or 4.5.*, the default path is :
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe
Upvotes: 2
Reputation: 4711
I got this after I had went back to 2015 from 2017 and I was still using the 2017 command prompt. Something to check.
Upvotes: 1
Reputation: 21
open visual studio command prompt in admin mode i.e., right click on vs command prompt and run as administrator
Upvotes: 2
Reputation: 129
Found a solution on bytes.com
The code to install a service:
@ECHO Installing Service...
@SET PATH=%PATH%;C:\Windows\Microsoft.NET\Framework\v4.0.30319\
@InstallUtil C:\Unlock_4_Service\bin\Debug\Unlock_4_Service.exe
@ECHO Install Done.
@pause
@InstallUtil <.exe file path of your windows service>
Code to uninstall the service
@ECHO Installing Service...
@SET PATH=%PATH%;C:\Windows\Microsoft.NET\Framework\v4.0.30319\
@InstallUtil /u C:\Unlock_4_Service\bin\Debug\Unlock_4_Service.exe
@ECHO Uninstall Done.
@pause
@InstallUtil /u <.exe file path of your windows service >
Save the 2 files as service_install.bat and service_uninstall.bat
Run the files as administrator, every time you have to install or uninstall the service.
Upvotes: 6
Reputation: 21
This might have occurred because you would not have opened the Command Prompt as an administrator or with Administrative Privileges.
Upvotes: 2
Reputation: 601
This is what I have done to make it go away:
Found where installutil resides on my PC. In my case it was C:\Windows\Microsoft.NET\Framework\v4.0.30319
Opened a command prompt as an Administrator and changed current directory to above: 'cd C:\Windows\Microsoft.NET\Framework\v4.0.30319'
Then entered: 'installutil C:\MyProgramName.exe'
Interestingly, prior to above solution I tried different options, among them adding C:\Windows\Microsoft.NET\Framework\v4.0.30319 to the System Path variable, but it still could not find it.
Wish you all smooth installation.
Upvotes: 50
Reputation: 911
InstallUtil.exe is typically found under one of the versions listed under C:\Windows\Microsoft.NET\Framework.
In my case it is under v4.0.30319.
You could just check your path:
echo %PATH%
should give you a list of directories searched for executables.
Upvotes: 28
Reputation: 1595
Unless you've modified your path, the following should be available in developer command prompt and not cmd:
... etc
If those aren't available you may have a corrupted install.
Upvotes: 2