Подтвердить что ты не робот

Как запустить файл ".bat" во время установки?

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

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

4b9b3361

Ответ 1

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

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

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

  • Создайте проект настройки и настройте, как обычно, включая подкаталог, в который вы поместите свой командный файл (вы можете просто поместить его в папку приложения напрямую, если вы не хотите его в подкаталоге).
  • В представлении "Файловая система" (щелкните правой кнопкой мыши проект в обозревателе решений → Вид → Файловая система) добавьте командный файл, который вы хотите выполнить, и cmd.exe(C:\Windows\System32\cmd EXE)
  • Откройте представление "Пользовательские действия" (щелкните правой кнопкой мыши проект в обозревателе решений → Вид → Пользовательские действия)
  • Щелкните правой кнопкой мыши на "Commit" и выберите "Добавить пользовательское действие"
  • Перейдите в и выберите cmd.exe.
  • Откройте панель свойств для вновь созданного пользовательского действия.
  • Удалить/Зафиксировать свойство Arguments.
  • Введите: /c "[TARGETDIR]subdirectoryname\batchfile.bat" в свойстве Arguments, где имя подкаталога должно быть заменено именем вашего подкаталога (если вы поместите пакетный файл в подкаталог, как я,... если вы это сделали 't, значение должно быть /c "[TARGETDIR]batchfile.bat"), а batchfile.bat должно быть именем файла вашего пакетного файла.

Что это. Теперь командный файл будет выполнен после завершения оставшейся части процесса установки.

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

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

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

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

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

Ответ 2

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

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

  • В представлении "Файловая система" (щелкните правой кнопкой мыши по проекту в Solution Explorer- > View- > File System) добавьте командный файл, который вы хотите выполнить.

  • Создайте проект установщика.

Ответ 3

Другим способом достижения одного и того же результата является файл .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

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