Skrypt wsadowy do instalacji lub odinstalowania a.NET serwis Windows

Nie mam doświadczenia w pisaniu skryptów wsadowych, ale zastanawiałem się, czy istnieje sposób, aby zainstalować usługę.Net Windows używając installutil.exe używając takiego skryptu, lub odinstalować usługę, jeśli jest już zainstalowana, najlepiej z jakimś potwierdzeniem, że rzeczywiście chciałbym wykonać odinstalowanie (np. Naciśnij Y, aby odinstalować).

Oto kilka szczegółów:

  • The .exe dla usługi znajduje się w katalogu C:\Program Files\Data Service
  • skrypt powinien znajdować się w tym samym katalogu co the .exe dla Serwisu
  • byłoby miło dodać prostą linię do pliku dziennika (nazwiemy ją program.log, również w tym katalogu) po zainstalowaniu usługi
  • komputer działa z systemem Windows Server 2003 z. NET Framework zainstalowanym w domyślnym katalogu C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727

Jeśli uważasz, że można to zrobić w lepszy sposób, byłoby miło usłyszeć inne sugestie. Zawsze mogę napisać instalator serwisu, ale to nie jest priorytet.

Author: John Rasch, 2009-02-24

10 answers

Możesz skonfigurować usługę exe tak, aby obsługiwała self registration / registration używając argumentów wiersza poleceń (- i-U itp.) zamiast pisać plik wsadowy, aby zrobić to samo.

Informacje o tworzeniu usług samodzielnej instalacji w. NET

Http://anotherlab.rajapet.net/2006/06/self-installing-services-in-net.html

Http://www.gotnet.biz/WindowsServiceSelfInstaller.ashx

Również dodanie projektu konfiguracji do rozwiązania i wizualne Studio build pakiet instalacyjny może być szybszy.

Jak utworzyć projekt instalacji dla usługi Windows w Visual Basic. NET lub w Visual Basic 2005

(VB) http://support.microsoft.com/kb/317421

(C#) http://support.microsoft.com/kb/816169

 13
Author: VBNight,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-24 18:29:04

To pliki wsadowe, których użyłem do instalacji.

@ECHO OFF

REM The following directory is for .NET 2.0
set DOTNETFX2=%SystemRoot%\Microsoft.NET\Framework\v2.0.50727
set PATH=%PATH%;%DOTNETFX2%

echo Installing MyService...
echo ---------------------------------------------------
InstallUtil /i MyService.exe
echo ---------------------------------------------------
echo Done.
pause

Do odinstalowania użyłem:

@ECHO OFF

REM The following directory is for .NET 2.0
set DOTNETFX2=%SystemRoot%\Microsoft.NET\Framework\v2.0.50727
set PATH=%PATH%;%DOTNETFX2%

echo Uninstalling MyService...
echo ---------------------------------------------------
InstallUtil /u MyService.exe
echo ---------------------------------------------------
echo Done
 30
Author: Kinze,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-24 18:30:44

Łatwiej jest po prostu dokonać samodzielnej instalacji usług. Gdy to zaimplementujesz, możesz uruchomić usługę exe bezpośrednio za pomocą przełącznika (/i lub /u) lub owinąć wywołanie w plik wsadowy, jeśli chcesz.

static void Main(string[] args)
{
    if (args.Length > 0)
    {
        //Install service
        if (args[0].Trim().ToLower() == "/i")
        { System.Configuration.Install.ManagedInstallerClass.InstallHelper(new string[] { "/i", Assembly.GetExecutingAssembly().Location }); }

        //Uninstall service                 
        else if (args[0].Trim().ToLower() == "/u")
        { System.Configuration.Install.ManagedInstallerClass.InstallHelper(new string[] { "/u", Assembly.GetExecutingAssembly().Location }); }
    }
    else
    {
        System.ServiceProcess.ServiceBase[] ServicesToRun;
        ServicesToRun = new System.ServiceProcess.ServiceBase[] { new MyService() };
        System.ServiceProcess.ServiceBase.Run(ServicesToRun);
    }
}
 24
Author: Annagram,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-10 18:57:08

Tego używam. Znalazłem go i użyłem. Thanx do Stwórcy..

@echo off

SET PROG="YourServiceHere.exe"
SET FIRSTPART=%WINDIR%"\Microsoft.NET\Framework\v"
SET SECONDPART="\InstallUtil.exe"
SET DOTNETVER=2.0.50727
  IF EXIST %FIRSTPART%%DOTNETVER%%SECONDPART% GOTO install
SET DOTNETVER=1.1.4322
  IF EXIST %FIRSTPART%%DOTNETVER%%SECONDPART% GOTO install
SET DOTNETVER=1.0.3705
  IF EXIST %FIRSTPART%%DOTNETVER%%SECONDPART% GOTO install
GOTO fail
:install
  ECHO Found .NET Framework version %DOTNETVER%
  ECHO Installing service %PROG%
  %FIRSTPART%%DOTNETVER%%SECONDPART% %PROG%
  GOTO end
:fail
  echo FAILURE -- Could not find .NET Framework install
:param_error
  echo USAGE: installNETservie.bat [install type (I or U)] [application (.exe)]
:end
  ECHO DONE!!!
  Pause
 6
Author: Jos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-19 22:38:52

Odkryłem, że zawsze lepiej jest użyć dobrego projektu instalacyjnego, który używa plików wsadowych do instalacji aplikacji. Czasami jednak nie da się tego zrobić. Kilka projektów w pracy zostało napisanych w czasach Windows NT i wczesnego Windows XP i używają prostych plików wsadowych do instalacji. W tych czasach konwersja pliku wsadowego do pakietu instalacyjnego jest bardziej kłopotliwa niż proste dostosowanie. Przez wiele poszukiwań odkryłem, że http://ss64.com/nt / jest bardzo dobrym Odniesienie do pliku wsadowego systemu Windows. (To po prostu dziwne uczucie, z całym naszym postępem w technologii oprogramowania, napisać to ostatnie zdanie.)

W Każdym Razie, Szczęśliwego Kodowania! - bez względu na "język".

 4
Author: iKevin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-26 21:20:27

Nie jestem pewien, po co Ci plik wsadowy do jednego linera. tego bym użył.

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe / align = "left" / dll

 2
Author: Al W,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-24 18:23:30

Sugestie:

  • korzystaj ze środowiska, Windows nie może być zainstalowany Na C:. Ale możesz użyć %WinDir%.
  • Możesz przekierować echo do pliku:

    Echo wiadomości > > logfile.txt

  • Śledzenie wszystkiego i łączenie wszystkich przypadków krawędzi może być trudne w cmd.exe, to nie jest bogate środowisko.

  • nie ma spójnego miejsca na dokumentację. Ale pomoc (z linii poleceń) na "cmd", "if", "for", " set" a "call" obejmuje wiele dostępnych składni.
  • Wyłącz echo na początku, aby zobaczyć polecenia podczas ich wykonywania.
 0
Author: Richard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-24 18:22:45

Utwórz plik z .rozszerzenie bat i umieść to w pliku

Installutil-u c:\YourServiceLocation\Service.exe

 0
Author: Oscar Cabrero,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-24 18:36:06

Zrobiłem to staromodnym plikiem wsadowym....

Skopiuj installutil.exe do tego samego katalogu co Twój plik wykonywalny (dla ułatwienia) poniżej znajduje się ogólny przykład zawartości pliku wsadowego niezbędnego: (mój był tylko nazwy instal.bat)


installutil MyService.exe 
sc config MyService type= interact type= own
sc failure MyService reset= 6000  actions= restart/5000/restart/5000/restart/5000
sc start MyService 

Aby uzyskać więcej informacji o opcjach wiersza poleceń dla installutil.exe, zobacz tutaj .

Aby odinstalować usługę, użyj innego pliku wsadowego z następującymi spis treści:


installutil MyService.exe /u

 0
Author: David,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-07 02:25:26
@echo off

SET PROG="c:\YourServiceLocation\Service.exe" SET FIRSTPART=%WINDIR%"\Microsoft.NET\Framework\v" SET SECONDPART="\InstallUtil.exe" SET DOTNETVER=4.0.30319 IF EXIST %FIRSTPART%%DOTNETVER%%SECONDPART% GOTO install

GOTO fail :install ECHO Found .NET Framework version %DOTNETVER% ECHO Installing service %PROG% %FIRSTPART%%DOTNETVER%%SECONDPART% %PROG% GOTO end :fail echo FAILURE -- Could not find .NET Framework install :param_error echo USAGE: installNETservie.bat [install type (I or U)] [application (.exe)] :end ECHO DONE!!! Pause

Uruchom ten plik bat jako administrator

 0
Author: chevhfghfghfgh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-30 12:05:39