Как запустить файл ".bat" во время установки?
В проекте установки исполняемые файлы, такие как ".exe,.dll,.js,.vbs", являются приемлемыми, но нет способа запустить файл .bat
в пользовательском действии.
Вопрос заключается в том, как запускать файлы *.bat
во время установки?
Ответы
Ответ 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
Если вы пытаетесь запустить пакетный файл с относительными путями во время процесса установки, это наверняка не удастся. Это потому, что командный файл учитывает каталог, в котором работает установщик, а не там, где были установлены файлы. Используйте установщики установщика, которые копируют пакетные файлы во временный каталог.