IExpress прекратит удаление файлов из временного местоположения

Я использовал IExpress для самоизвлечения. Я хочу предотвратить удаление файлов из временного местоположения. Это возможно или нет?

если нет, то любой другой самораспаковщик может сделать то же самое или нет?

1 ответ

Решение

Это не представляется возможным напрямую с помощью IExpress, хотя вы можете обходить его хитроумно. Есть другие архиваторы, которые могут сделать это напрямую; На ум приходит WinRAR, хотя я уверен, что есть и другие.

IExpress, кажется, имеет три режима:

  1. Извлечь файлы во временный каталог (кажется, что-то вроде %temp%\IXP000.TMP), выполните команду установки, выполните дополнительную команду после установки, удалите временный каталог.

  2. Извлечь файлы; местоположение должно быть либо указано в командной строке, либо пользователю будет предложено указать местоположение. (Я не мог найти способ установить каталог извлечения в мастере или .sed файл.)

  3. Создать .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 что не хорошо.

Другие вопросы по тегам