CMD/BAT - [решено] Извлечь из архива только определенную папку/определенный файл

Аватара пользователя
Iska

Re: CMD/BAT - [решено] Извлечь из архива только определенную папку/определенный файл

Сообщение Iska »

Цитата Iska:



средствами самого sfx
CMD/BAT - [решено] Извлечь из архива только определенную папку/определенный файл




Если в архиве нет иных папок, кроме исходных для слияния, то вообще не вижу большого смысла в такой постановке задачи - при больших архивах время на разархивацию много больше, чем время на перемещение посредством move распакованного в общую папку на том же диске. Если есть иные папки, то и sfx-архив можно распаковать и 7zG.exe, конечно, тогда и смысл иметь sfx-архив теряется. Кстати, не сумел подавить запрос на определение целевой папки для разархивации при запуске екзешника sfx-архива
Аватара пользователя
mariolast

Re: CMD/BAT - [решено] Извлечь из архива только определенную папку/определенный файл

Сообщение mariolast »

Суть сего в следующем.

Есть распакованные инсталляторы программы, 32 и 64 битные версии, для каждой свой. Лежат соотв. в папках x86 и x64. Размер каждой примерно 500Мб. С помощью sfx делается установка программы, определяется битность и после распаковки запускается инсталлятор либо из x64 либо из x86. Это все стандартно. Размер sfx инсталлятора составил 330Мб. Но еще задумка уменьшить размер sfx инсталлятора. Для это понаходил все одинаковые по содержимому, размеру и названию файлы, которые есть у обоих папках инсталлятора x86 и x64. И вынес их в отдельную папку Common. Получилось где то на 500Мб. Таким образом удалось уменьшить вес на 500Мб, так как удалил по 500Мб из x86 и x64 и создал одну папку Common на 500Мб. Таким образом в конечном sfx инсталляторе после создания получается где то 270Мб. Выигрыш в 60Мб и меньшее количество файлов в архиве, что положительно сказывается и на скорости распаковки. Теперь застопорился на том, как после запуска и распаковки инсталлятора в темповую папку обьединить папки скажем x86 и Common, потому как для запуска инсталлятора в папке ч86 ему надо дозаписать те 500Мб, которые перенес в папку Common.

Для создания инсталляторов пользуюсь InnoSetup, там это без проблем, что куда распаковать, но он не умеет так ужимать, мало параметров.

Думал что сам 7zip умеет определять одинаковые файлы и сжимать раз и записывать местоположение для распаковки. По разному игрался. Особо эффекта не дало, решил попробовать вот таким методом.
Аватара пользователя
sov44

Re: CMD/BAT - [решено] Извлечь из архива только определенную папку/определенный файл

Сообщение sov44 »

mariolast, сначала переносим содержимое папки Common в папку разрядности системы, затем запуск исполнительного файла



Код:

Код: Выделить всё

RunProgram="%%P:hidcon:cmd /c \"move Common\\* %%P\\\""
RunProgram="%%P\\install.exe"
Аватара пользователя
mariolast

Re: CMD/BAT - [решено] Извлечь из архива только определенную папку/определенный файл

Сообщение mariolast »

sov44, затык в том, что если в папке х86 есть папка 1 и в папке Common есть папка 1, то при переносе получаем Отказано в доступе.
Аватара пользователя
mariolast

Re: CMD/BAT - [решено] Извлечь из архива только определенную папку/определенный файл

Сообщение mariolast »

Пока смотрю в сторону AutoIT с его функцией DirMove ( "source dir", "dest dir" [, flag = 0 ] )

Там это делается без проблем за секунду. Но если что то можно придумать скриптом, буду рад за помощь,
Ответить

Вернуться в «Скриптовые языки администрирования Windows»