Jak uruchomić a".bat " plik podczas instalacji?

W projekcie instalacyjnym pliki wykonywalne, takie jak ".exe ,dll , .js ,vbs " są dopuszczalne, ale nie ma możliwości uruchomienia pliku .bat w niestandardowej akcji.

Pytanie jak uruchomić pliki *.bat podczas instalacji?

Author: Hakam Fostok, 2010-03-10

4 answers

Cóż, po wielu poszukiwaniach i próbach i błędach rozwiązałem to. Nie jestem pewien, czy to najlepszy sposób, ale to działa.

Oto scenariusz: mam aplikację, którą chciałbym wdrożyć za pomocą projektu instalacyjnego Visual Studio. Oprócz plików aplikacji, chciałbym utworzyć podkatalog w katalogu docelowym, który zawiera batch (.bat) plik. Chciałbym, aby ten plik został uruchomiony pod koniec procesu instalacji.

Oto co Ty do:

  1. Utwórz projekt instalacyjny i skonfiguruj tak, jak zwykle, włączając w to podkatalog, w którym umieścisz plik wsadowy(możesz go po prostu umieścić bezpośrednio w folderze aplikacji, Jeśli nie chcesz go w podkatalogu).
  2. W widoku" system plików " (kliknij prawym przyciskiem myszy projekt w Eksploratorze rozwiązań->Widok->System plików) Dodaj plik wsadowy, który chcesz wykonać i cmd.exe (C:\Windows\System32\cmd.exe)
  3. Otwórz widok "działania niestandardowe" (kliknij prawym przyciskiem myszy projekt w Eksploratorze rozwiązań->Widok - > działania niestandardowe)
  4. Kliknij prawym przyciskiem myszy "Zatwierdź" i wybierz "Dodaj niestandardową akcję"
  5. przejdź do i wybierz cmd.exe.
  6. otwiera panel właściwości dla nowo utworzonej akcji niestandardowej.
  7. Usuń / Zatwierdź z właściwości Arguments.
  8. Enter: /c "[TARGETDIR]subdirectoryname\batchfile.bat" we właściwości Arguments, gdzie nazwa podkatalogu powinna być zastąpiona nazwą Twojego podkatalogu (jeśli umieścisz plik wsadowy w podkatalogu tak jak ja... jeśli nie, wartość powinna być /c "[TARGETDIR]batchfile.bat") i batchfile.bat powinien być nazwą pliku wsadowego.
To wszystko. Plik wsadowy zostanie wykonany po zakończeniu pozostałej części procesu instalacji.

Oto przykład dla jasności:

Mój plik wsadowy: bla.bat
Mój podkatalog: mydir

Wartość argumentów dla mojej niestandardowej akcji targetującej cmd.exe wtedy be

/c "[TARGETDIR]mydir\blah.bat"

Mam nadzieję, że to komuś pomoże!
 56
Author: Brian Mulcahy,
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-06-09 21:57:07

Innym sposobem osiągnięcia tego samego wyniku jest umieszczenie a .plik vbs w niestandardowych akcjach, które uruchamiają korespondenta .plik bat. Poniższy kod to " RunRegisterComponents.vbs " umieściłem w folderze instalacyjnym aplikacji. Oczywiście, że umieściłem [TARGETDIR] jako .parametr vbs w oknie Właściwości Visual Studio.

dim WshShell
Set WshShell = CreateObject("WScript.Shell")

' Read the "CustomActionData" property holding the install directory.
dim programDir
programDir=  property("CustomActionData")

' Make the batch full file name and parameter
commandString = chr(34) & programDir & "RegisterComponents.bat" & chr(34) & " " & chr(34) &
programDir& chr(34)

' Set the current directory
WshShell.CurrentDirectory = programDir

' Run batch.
ret = WshShell.Run (commandString, 0, 0)

To tak jak ustawiam własne akcje:

Tutaj wpisz opis obrazka

Mam nadzieję, że to ci pomoże!
 5
Author: Massimo,
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
2016-12-12 13:13:10
  1. Sprawdź ten artykuł (artykuł jest przestarzały), mimo że jest w VB.NET dotyczy to również C#. Najważniejszą częścią jest (przetłumaczone na język C#) utworzenie nowej biblioteki klas i dodanie nowej klasy Instalatora o następującej treści: jak opisano w artykule, możesz następnie utworzyć nową akcję niestandardową z odniesieniem do właśnie utworzonego projektu.

    override void Commit(IDictionary savedState)
    {
         base.Commit(savedState);
         System.Diagnostics.Process.Start("myApp.bat","your bat arguments");
    }
    
  2. Teraz dodajemy plik wsadowy do twojego projektu Instalatora. Utwórz projekt konfiguracji i skonfiguruj jak normalnie tak, włączając podkatalog, w którym umieścisz plik wsadowy(możesz po prostu umieścić go bezpośrednio w folderze aplikacji, Jeśli nie chcesz go w podkatalogu).

  3. W widoku" system plików " (kliknij prawym przyciskiem myszy projekt w Eksploratorze rozwiązań->Widok->System plików) Dodaj plik wsadowy, który chcesz wykonać.

  4. Zbuduj projekt instalatora.

 4
Author: Y P,
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
2013-04-30 09:58:56

Jeśli podczas instalacji próbujesz uruchomić plik wsadowy ze ścieżkami względnymi, to na pewno się to nie uda. Dzieje się tak dlatego, że plik wsadowy będzie uwzględniał katalog, w którym działa instalator, a nie miejsce, w którym pliki były instalowane. Użyj instalatorów kopiujących pliki wsadowe do katalogu tymczasowego.

 0
Author: gomugomuno,
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
2010-05-14 12:01:03