如何解决"'installutil'不被识别为内部或外部命令,可操作程序或批处理文件."?

why*_*heq 51 c# cmd visual-studio visual-studio-2012

刚尝试通过以下方式运行应用程序:

在此输入图像描述

我浏览了一个带有应用程序的目录WindowsService1.exe,然后尝试了命令,Installutil WindowsService1.exe但得到了以下错误...

在此输入图像描述

由于VS只安装了一两天,我担心安装会出现问题,因为它应该识别installutil.

我是否可以执行一些基本诊断以确保VS命令提示符找到它应该的所有程序?

编辑

如果我PATH在命令提示符下运行,我会看到以下内容:

在此输入图像描述

Kar*_*ren 120

这有点偏离主题,但我已经停止使用InstallUtil来安装我的服务.将它添加到服务本身真的很容易.添加引用System.Configuration.Install(如果我没记错的话,在Client Profile版本中不可用),然后像这样在Program.cs中更新Main() - 函数.

static void Main(string[] args)
{
    if (Environment.UserInteractive)
    {
        string 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 ServiceBase[] 
                          { 
                              new Service1() 
                          };
        ServiceBase.Run(servicesToRun);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以WindowsService1.exe--install参数调用它将安装服务,你可以忘记InstallUtil.exe.

  • 针对安装失败捕获InvalidOperationException,针对卸载失败捕获InstallException [安全性和已安装(未安装)]. (9认同)
  • 直接启动可执行文件时,`Environment.UserInteractive`为true,即不是通过servicemanager,而是通过命令行或Visual Studio.您可以添加一个"System.Diagnostics.Debugger.IsAttached"的检查,以便在Visual Studio中进行调试时跳过该部分. (8认同)
  • @ Karl-JohanSjögren我们刚刚卸载,然后使用installutil并遇到了同样的问题...所以它与这种技术无关.事实证明,设置我们的安装程序的开发人员在安装程序构造函数中遗漏了许多必要的代码,该代码显示在此页面上的示例中:http://msdn.microsoft.com/en-us/library/system.serviceprocess .serviceinstaller.aspx (2认同)
  • 您需要添加`using System.Reflection;`。 (2认同)

小智 33

这就是我所做的让它消失的原因:

  1. 找到installutil在我的电脑上的位置.在我的例子中它是C:\ Windows\Microsoft.NET\Framework\v4.0.30319

  2. 以管理员身份打开命令提示符并将当前目录更改为上面:'cd C:\ Windows\Microsoft.NET\Framework\v4.0.30319'

  3. 然后输入:'installutil C:\ MyProgramName.exe'

有趣的是,在上面的解决方案之前,我尝试了不同的选项,其中将C:\ Windows\Microsoft.NET\Framework\v4.0.30319添加到System Path变量,但它仍然无法找到它.

祝大家顺利安装.

  • 这是更好,更实用的答案.谢谢. (2认同)

Dan*_*iel 27

InstallUtil.exe通常位于C:\ Windows\Microsoft.NET\Framework下列出的某个版本下.

在我的情况下,它是在v4.0.30319.

你可以检查你的路径:

echo%PATH%

应该给你一个搜索可执行文件的目录列表.

  • VS中的命令提示符基本上是一个具有不同PATH的cmd. (5认同)

use*_*978 5

在 bytes.com 上找到了解决方案

安装服务的代码:

@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
Run Code Online (Sandbox Code Playgroud)

@InstallUtil <您的Windows服务的.exe文件路径>

卸载服务的代码

@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
Run Code Online (Sandbox Code Playgroud)

@InstallUtil /u <Windows服务的.exe文件路径>

将这 2 个文件保存为 service_install.bat 和 service_uninstall.bat

每次必须安装或卸载服务时,以管理员身份运行这些文件。 在此输入图像描述


小智 5

只需installUtil.exe在环境变量中添加路径即可解决此问题。

例子:

 C:\Windows\Microsoft.NET\Framework\v4.0.30319
Run Code Online (Sandbox Code Playgroud)