Как запустить файл .bat во время установки? - PullRequest
31 голосов
/ 10 марта 2010

В проекте установки допустимы такие исполняемые файлы, как ".exe, .dll, .js, .vbs", но невозможно запустить файл .bat в пользовательском действии.

Вопрос в том, как запустить файлы *.bat во время установки?

Ответы [ 4 ]

59 голосов
/ 09 июня 2011

Ну, после долгих поисков, проб и ошибок я решил это. Я не уверен, что это лучший способ, но он работает.

Вот сценарий: у меня есть приложение, которое я хотел бы развернуть через проект установки Visual Studio. В дополнение к моим файлам приложений, я хотел бы создать подкаталог в целевом каталоге, который содержит пакетный (.bat) файл. Мне бы хотелось, чтобы этот файл запускался в конце процесса установки.

Вот что вы делаете:

  1. Создайте проект установки и настройте его, как обычно, включая подкаталог, в который вы поместите свой пакетный файл (вы можете просто поместить его непосредственно в папку приложений, если вы не хотите, чтобы он находился в подкаталоге).
  2. В представлении «Файловая система» (щелкните правой кнопкой мыши проект в обозревателе решений-> Вид-> Файловая система), добавьте пакетный файл, который вы хотите выполнить и cmd.exe (C: \ Windows \ System32 \ cmd.exe)
  3. Откройте представление «Настраиваемые действия» (щелкните правой кнопкой мыши проект в Обозревателе решений-> Вид-> Настраиваемые действия)
  4. Щелкните правой кнопкой мыши на «Commit» и выберите «Add Custom Action»
  5. Перейдите к cmd.exe и выберите его.
  6. Открыть панель свойств для вновь созданного настраиваемого действия.
  7. Удалить / зафиксировать из свойства Arguments.
  8. Введите: /c "[TARGETDIR]subdirectoryname\batchfile.bat" в свойстве Аргументы, где имя подкаталога должно быть заменено именем вашего подкаталога (если вы поместили пакетный файл в подкаталог, как я сделал ... если вы не сделали t, значение должно быть /c "[TARGETDIR]batchfile.bat"), а batchfile.bat должно быть именем вашего командного файла.

Вот и все. Пакетный файл теперь будет выполняться после завершения процесса установки.

Вот пример для ясности:

Мой пакетный файл: blah.bat
Мой подкаталог: mydir

Значением Аргументов для моего настраиваемого действия, нацеленного на cmd.exe, будет

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

Надеюсь, это кому-нибудь поможет!

5 голосов
/ 23 октября 2014

Еще один способ достичь того же результата - поместить файл .vbs в пользовательские действия, запускающий соответствующий файл .bat. Следующий код - «RunRegisterComponents.vbs», который я поместил в папку программы установки. Конечно, я поместил [TARGETDIR] в качестве параметра .vbs в окне свойств 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)

Вот так я устанавливаю свои пользовательские действия:

enter image description here

Надеюсь, это поможет вам!

4 голосов
/ 06 июля 2012
  1. Проверьте эту статью (статья устарела), даже если она находится в VB.NET, она также применима и к C #. Наиболее важной частью является (перевод на C #) создание новой библиотеки классов и добавление нового класса установщика со следующим содержанием: Как указано в статье, вы можете затем создать новое настраиваемое действие со ссылкой на только что созданный проект.

    override void Commit(IDictionary savedState)
    {
         base.Commit(savedState);
         System.Diagnostics.Process.Start("myApp.bat","your bat arguments");
    }
    
  2. Теперь мы добавляем пакетный файл в ваш проект установщика. Создайте проект установки и настройте его, как обычно, включая подкаталог, в который вы поместите свой пакетный файл (вы можете просто поместить его в папку приложений напрямую, если вы не хотите, чтобы он находился в подкаталоге).

  3. В представлении «Файловая система» (щелкните правой кнопкой мыши проект в Обозревателе решений-> Вид-> Файловая система), добавьте пакетный файл, который вы хотите выполнить.

  4. Сборка проекта установщика.

0 голосов
/ 14 мая 2010

Если вы пытаетесь запустить пакетный файл с относительными путями во время процесса установки, это наверняка не удастся. Это связано с тем, что командный файл будет учитывать каталог, в котором работает установщик, а не место, где были установлены файлы. Используйте сборщики установщиков, которые копируют пакетные файлы во временный каталог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...