Как извлечь конкретные файлы из того же ZIP-файла, что и исполняемый файл - PullRequest
1 голос
/ 07 марта 2012

Мне известно о нескольких библиотеках, которые позволяют извлекать файлы из zip-файла (DotnetZip, SharpZipLib и т. Д.), Однако возможно, чтобы исполняемый файл, выполняющий извлечение, находился в том же zip-файле, из которого извлекаются конкретные файлы

Вот мое видение:

1) Пользователь дважды щелкает zip-файл, чтобы просмотреть его содержимое. 2) Двойной щелчок на exe 3) этот exe-файл извлекает несколько файлов из zip-файла, в котором он содержится, в указанный каталог 4) В этом каталоге теперь есть нужные файлы. 5) exe в этом каталоге запускается.

Я знаю, это звучит очень похоже на существующие решения SFX. Однако, похоже, что ни один из них не может удовлетворить мои потребности, описанные в этом вопросе: Как я могу создать приложение .Net, которое распространяется в виде отдельного и автономного файла / объекта (без установщика)?

Я знаю, эти требования звучат странно. Если бы я мог изменить Powers That Be, я бы просто отправил MSI и один или два XML-файла для конфигураций.

Конечно, я приветствую критические отзывы и вопросы.

Ответы [ 2 ]

0 голосов
/ 08 марта 2012

Самораспаковывающиеся exe были изобретены для этого.

Этот загрузчик, вероятно, лучше всего написан на C (++), или что-то, что не зависит от времени выполнения, очень мало оконных коробок без .net, но если вы столкнулись с одним из них, у вас нет любой контроль над тем, как ваш установщик терпит неудачу ....

0 голосов
/ 08 марта 2012

Вы действительно не сможете сделать это, если не будете контролировать процесс от начала до конца.

Если дважды щелкнуть zip-файл в Windows (начиная с XP), он покажет вам содержимое.Когда вы дважды щелкаете файл в zip-файле, он копирует этот файл во временный каталог, а затем файл запускается (или к нему применяется соответствующий обработчик оболочки).

Когда это происходит, ваш исполняемый файл (или исполняемый файл, обрабатывающий ваш тип файла) не получает никаких специальных параметров / переменных / индикаторов среды, которые говорят «эй, я был в молнии», что касается вашего файла, вы 'просто в другом каталоге.

Кроме того, оболочка - это не программа only , которая может обрабатывать тип файла .zip;Есть много утилит, которые могут, и все они будут подходить к обработке двойного щелчка по файлу в zip .

Конечно, все они могут использовать временный каталог для копирования файла в, но ничто не заставляет их (по соглашению или через API) делать это таким же способом.

Если вы собираетесь это сделать, то вы действительно собираетесьнужно распространять EXE-файл, который будет управлять процессом zip от начала до конца (вы можете упаковать ваш real исполняемый файл как ресурс в файле).

...