IExpress прекратит удаление файлов из временного местоположения
Я использовал IExpress для самоизвлечения. Я хочу предотвратить удаление файлов из временного местоположения. Это возможно или нет?
если нет, то любой другой самораспаковщик может сделать то же самое или нет?
1 ответ
Это не представляется возможным напрямую с помощью IExpress, хотя вы можете обходить его хитроумно. Есть другие архиваторы, которые могут сделать это напрямую; На ум приходит WinRAR, хотя я уверен, что есть и другие.
IExpress, кажется, имеет три режима:
Извлечь файлы во временный каталог (кажется, что-то вроде
%temp%\IXP000.TMP
), выполните команду установки, выполните дополнительную команду после установки, удалите временный каталог.Извлечь файлы; местоположение должно быть либо указано в командной строке, либо пользователю будет предложено указать местоположение. (Я не мог найти способ установить каталог извлечения в мастере или
.sed
файл.)Создать
.cab
файл. (Но если честно, я бы просто использовалmakecab
или жеcabarc
...)
Одним из обходных путей является объединение архива IExpress в архив IExpress; внутренний архив (который содержит ваши фактические файлы) является типом только для извлечения (2), а внешний архив (который содержит только ваш внутренний архив) является типом установщика (1). Внешний архив IExpress имеет команду установки, например:
cmd /c innerArchive.exe /q /t:"%temp%\persistent"
Это оставит файлы в %temp%\persistent
, (The cmd /c
необходимо выполнить расширение переменной на %temp%
.)
Если вам действительно нужно запустить команду для установки чего-либо, вы можете указать это как команду после установки (ссылка %temp%\persistent
если вы запускаете файл из внутреннего архива). Снова вам может понадобиться cmd /c
расширить это.
Другой способ, который может быть более простым, - это простой командный файл:
@echo off
xcopy /y * "%temp%\persistent\"
rem Execute any other commands here...
Тогда вам нужен только один архив IExpress, тип установщика (1), который выполняет командный файл. Убедитесь, что вы запускаете его как cmd /c persist.bat
- иначе он будет выполнен command.com
что не хорошо.