Создать пакетный файл для iexpress
Я пытаюсь использовать iexpress
запустить мой командный файл, который будет выполнять 2 EXE-файла и 1 MSI-файлы для меня. когда я пытаюсь сделать это вручную, это работает.
Ниже приведен код в моем командном файле.
Start /wait %CD%\1.exe /q
Start /wait %CD%\2.exe /q
msiexec.exe /i "%CD%\3.msi"
но это, кажется, не работает, когда я создаю исполняемый файл из iexpress.
Вышеупомянутая статья имеет некоторый код (для копирования файлов во временную папку), но я не могу понять синтаксис.
MKDIR %Tmp%\<UNIQUE PRODUCT NAME>
XCOPY . %Tmp%\<UNIQUE PRODUCT NAME> /S /E /Y
%Tmp%\<UNIQUE PRODUCT NAME>\setup.exe
5 ответов
Проблема в том, что, как вы можете видеть на скриншоте, пакетный файл выполняется command.com
не cmd.exe
, (Если вы не укажете переводчик, IExpress использует command.com
, Ой.) Так что нет таких переменных, как %cd%
или же %~dp0
,
Вы вероятно не нуждаетесь в них так или иначе. Но вам нужно явно выполнить пакетный файл в IExpress, например:
cmd.exe /c file.bat
так что он использует современный интерпретатор команд.
Второй фрагмент кода в вашем вопросе делает файлы постоянными (то есть они не будут удалены после завершения работы архива IExpress) xcopy
их в другой каталог.
Вот что это значит:
1) Создает каталог (MKDIR
) с именем "УНИКАЛЬНОЕ ИМЯ ПРОДУКТА" в пути, хранящемся в %TMP%
Переменная окружения, которая обычно указывает на: C: \ DOCUME ~ 1 \ yourusername \ LOCALS ~ 1 \ Temp
MKDIR %Tmp%\<UNIQUE PRODUCT NAME>
2) Затем рекурсивно скопируйте все установочные файлы из текущей папки в новую папку, созданную ранее. Аргументы XCOPY:
/S
Копирует каталоги и подкаталоги, кроме пустых.
/E
Копирует каталоги и подкаталоги, в том числе пустые. Такой же как /S /E
, Может быть использован для модификации /T
,
/Y
Подавляет запрос на подтверждение того, что вы хотите перезаписать существующий файл назначения.
XCOPY . %Tmp%\<UNIQUE PRODUCT NAME> /S /E /Y
3) Наконец, запустите приложение из нового расположения%Tmp%\\setup.exe
Надеюсь это поможет
Попробуйте заменить %CD%
с %~dp0
Предполагая, что 1.exe находится в той же папке, что и ваш пакетный скрипт.
Ваш% CD% не работает. Убедитесь, что расширения CMD включены (введите CMD /x, чтобы включить, и CMD /y, чтобы отключить), затем разверните% CD% этим кодом.
SET CURDIR=%CD%
Start /wait "%CURDIR%\1.exe" /q
Start /wait "%CURDIR%\2.exe" /q
msiexec.exe /i "%CURDIR%\3.msi"
И я не уверен, что вы можете запустить EXE из этого места (APPDATA) по соображениям безопасности.
Большое спасибо за обсуждение этого форума. Наконец я смог собрать все msi-файлы и исполняемые файлы в один.exe-файл.
Завершите процедуру следующим образом: создайте командный файл.
echo on
SET CURDIR=%CD%
msiexec.exe /i "%CURDIR%\1.msi"
"%CURDIR%\3.EXE"
"%CURDIR%\setup.exe"
echo off
Вы можете расположить любое количество exe-файлов или msi-файлов по своему усмотрению и сохранить пакетный файл как yourfile.bat. Теперь самое сложное, прежде чем перейти к Iexpress, преобразуйте пакетный файл в exe с помощью программного обеспечения, предоставленного http://www.f2ko.de/programs.php?pid=b2e
Теперь, когда вы запускаете программу, держите флажок "Невидимое приложение", чтобы скрыть командную строку. Вы также можете зашифровать свой exe с помощью пароля. "Удалить при выходе" является необязательным, поскольку временная папка будет автоматически удалена после завершения выполнения файлов. После того, как вы успешно скомпилируете пакетный файл, выполните созданный файл.exe. Бинго!! вы не увидите окно командной строки, и ваши приложения начнут выполняться последовательно.
Запустите инструмент Iexpress и добавьте все свои файлы, присутствующие в командном файле (кроме командного файла). На экране "Установка программы для запуска" оставьте поле "Команда после установки" пустым и найдите в раскрывающемся списке "Установка программы" следующее: ' demo.exe и продолжайте создавать свой полный пакет из одного пакета. Ура!!