Как запустить ".bat " файл во время установки?
в проекте установки исполняемые файлы, такие как ".исполняемый. , файл DLL. , js,.vbs " приемлемы, но нет способа запустить .bat
файл в пользовательском действии.
вопрос в том, как запустить *.bat
файлы во время установки?
4 ответов
Ну, после долгих поисков и проб и ошибок я решил. Я не уверен, что это лучший способ, но он работает.
вот сценарий: у меня есть приложение, которое я хотел бы развернуть через проект установки Visual Studio. В дополнение к моим файлам приложений я хотел бы создать подкаталог в целевом каталоге, который содержит пакет (.Bat-файл. Я бы этот файл в конце процесса установки.
вот что вы do:
- создайте проект установки и настройте, как обычно, включая подкаталог, в который вы разместите свой пакетный файл (вы можете просто поместить его в папку приложения напрямую, если вы не хотите его в подкаталоге).
- в представлении "файловая система" (щелкните правой кнопкой мыши проект в обозревателе решений->вид->файловая система) добавьте пакетный файл, который вы хотите выполнить и cmd.exe (C:\Windows\System32\cmd - ... exe)
- открыть Просмотр "пользовательские действия" (щелкните правой кнопкой мыши проект в обозревателе решений->просмотр->пользовательские действия)
- щелкните правой кнопкой мыши на "Commit" и выберите "Добавить Пользовательское действие"
- перейдите и выберите cmd.исполняемый.
- Откройте панель свойств для вновь созданного настраиваемого действия.
- Delete/Commit из свойства Arguments.
- Enter:
/c "[TARGETDIR]subdirectoryname\batchfile.bat"
в свойстве Arguments, где subdirectoryname следует заменить именем ваш подкаталог (если вы поместите пакетный файл в подкаталог, как я это сделал... если вы этого не сделали, значение должно быть/c "[TARGETDIR]batchfile.bat"
) и batchfile.bat должен быть именем вашего пакетного файла.
вот именно. Пакетный файл теперь будет выполнен после завершения остальной части процесса установки.
вот пример для ясности:
мой пакетный файл: мля.летучая мышь!--28-->
Мой подкаталог: mydir
значение аргументов для моего настраиваемого действия таргетинга cmd.exe тогда будет
/c "[TARGETDIR]mydir\blah.bat"
надеюсь, что кто-то поможет!
еще один способ достичь того же результата-поставить a .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)
вот как я устанавливаю свои пользовательские действия:
Я надеюсь, что это может вам помочь!
-
проверьте эту статью (статья устарела), даже если она находится в VB.NET это относится и к C#. Наиболее важной частью является (в переводе на C#) создание новой библиотеки классов и добавление нового класса установщика со следующим содержимым: как указано в статье, вы можете создать новое пользовательское действие со ссылкой на только что созданный проект.
override void Commit(IDictionary savedState) { base.Commit(savedState); System.Diagnostics.Process.Start("myApp.bat","your bat arguments"); }
Теперь мы добавляем пакетный файл в ваш проект установщика. Создание проекта установки и настройте, как обычно, включая подкаталог, в который вы разместите свой пакетный файл (вы можете просто поместить его в папку приложения напрямую, если вы не хотите, чтобы он был в подкаталоге).
в представлении "файловая система" (щелкните правой кнопкой мыши проект в обозревателе решений->вид->файловая система) добавьте пакетный файл, который вы хотите выполнить.
создайте проект установщика.
Если вы пытаетесь запустить пакетный файл, который имеет относительные пути во время процесса установки, это точно не удастся. Это связано с тем, что пакетный файл будет учитывать каталог, в котором работает установщик, а не где файлы были установлены. Используйте построители установщика, которые копируют пакетные файлы во временный каталог.