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.
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
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
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);
}
}
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
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".
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
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.
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
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
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
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