Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 8]
vk_k14m@vk
20-09-2017, 01:04
что мешает сделать это даже до создания инсталляции? Что мешает «запаковать папки "00" и "01" в специальне архив с помощью packer.exe» на месте и поместить в инсталляцию уже готовый архив? »
Предполагается что у устанавливаемого приложения (на самом деле игры) будет на выбор множество взаимозаменяемых компонентов. Все они хранятся в специальных архивах которые можно распаковывать/упаковывать через packer.exe. Тобиш в зависимости от того какие галочки ты выберешь при установке эти архивы могут быть слегка либо совершенно разными. А если эти архивы весят по 300-900 МБайт? Не буду же я раздувать инсталятор кучей архивов с дубликатами файлов.
Вот по этому и нужно раскидать по папками нужные файлы и в конце их запаковать.
Dodakaedr
20-09-2017, 08:22
При переходе решил изменить код. Но дело в том, что перестала работать ботва т.е. не отображаются картинки. Помогите решить проблему. »
В модуле Code_2.iss напишите название секции [Code]
После распаковки этих файлов должна запуститься консоль и запаковать папки "00" и "01" в специальне архив с помощью packer.exe. »
[Run]
Filename: {app}/data/packer.exe; WorkingDir: {app}/data; Parameters: {app}/data/00; Description: Упаковка файлов...; Flags: waituntilterminated runhidden
Filename: {app}/data/packer.exe; WorkingDir: {app}/data; Parameters: {app}/data/01; Description: Упаковка файлов...; Flags: waituntilterminated runhidden
Filename: {app}/data/packer.exe; WorkingDir: {app}/data; Parameters: {app}/data/02; Description: Упаковка файлов...; Flags: waituntilterminated runhidden
И так далее. Флаг runhidden позволит скрыть консольное окно (packer.exe), можно убрать, если не требуется.
habib2302
20-09-2017, 11:20
Dodakaedr, для обычной версии inno setup это ничего не меняет. как не отображались так и не отображаются
Dodakaedr
20-09-2017, 13:45
для обычной версии inno setup это ничего не меняет. как не отображались так и не отображаются »
Тогда создайте кастомную панель с белым цветом, лого конвертируйте в jpg формат с белым фоном.
ImgPanel := TPanel.Create(wizardform);
ImgPanel.parent := wizardform;
imgpanel.color := clwhite;
imgpanel.setbounds(370, 3, 55, 55);
imgpanel.bevelouter := bvNone;
........
lPicHandle := ImgLoad(imgpanel.Handle, ExpandConstant('{tmp}\WMSI.jpg'), ScaleX(0), ScaleY(0), WizardSmallBitmapImage.Width, WizardSmallBitmapImage.Height, True, True);
WizardSmallBitmapImage.Hide;
ImgSetVisibility(lPicHandle, True);
ImgApplyChanges(imgpanel.Handle);
vk_k14m@vk
20-09-2017, 14:46
И так далее. Флаг runhidden позволит скрыть консольное окно (packer.exe), можно убрать, если не требуется. »
Большое спасибо, это то что надо.
И еще один вопрос. Архивы созданы с помощью packer.exe буду удаляться при удалении приложения?
Ах да, нужно же потом удалить те временные папки после запаковки. Как это сделать?
И еще один вопрос. Архивы созданы с помощью packer.exe буду удаляться при удалении приложения? »
Разумеется нет — ведь этих файлов не было в комплекте поставки.
vk_k14m@vk
20-09-2017, 18:17
Разумеется нет — ведь этих файлов не было в комплекте поставки. »
А вручную их прописать нельзя? Например при удалении некоторых игр у меня и сейвы удалялись. Хотя их в установщике не было...
Архивы созданы с помощью packer.exe буду удаляться при удалении приложения? »
Не будут.
А так:
[UninstallDelete]
Name: {app}\data\*.ext; Type: files- будут. Только правильно укажите путь и расширение файлов (архивов). В данном случае удалены будут все файлы по указанной вами маске.
нужно же потом удалить те временные папки после запаковки. »
На нужных папках, которые прописаны в секции [Files], дописать флаг deleteafterinstall (Flags: deleteafterinstall).
vk_k14m@vk
20-09-2017, 18:51
Код:
[Run]
Filename: {app}/data/packer.exe; WorkingDir: {app}/data; Parameters: {app}/data/00; Description: Упаковка файлов...; Flags: waituntilterminated runhidden
Filename: {app}/data/packer.exe; WorkingDir: {app}/data; Parameters: {app}/data/01; Description: Упаковка файлов...; Flags: waituntilterminated runhidden
Filename: {app}/data/packer.exe; WorkingDir: {app}/data; Parameters: {app}/data/02; Description: Упаковка файлов...; Flags: waituntilterminated runhidden»
Не работает. Просто ничего не происходит. Если убрать флаг runhidden то видно что консоль открывается и тут же пропадает. Хотя она должна несколько секунд упаковывать файлы.
Если убрать флаг runhidden то видно что консоль открывается и тут же пропадает. Хотя она должна несколько секунд упаковывать файлы. »
Значит вы не правильно указали параметры (в 'Parameters') упаковки файлов, тут уж давайте сами разбирайтесь, как работать с "packer.exe". Моя задача была вам показать, как запустить "packer.exe" с параметрами (параметры были предоставлены в вашем примере) после распаковки файлов, судя по вашему ответу, packer.exe запустился, далее дело за вами.
vk_k14m@vk
20-09-2017, 19:10
Значит вы не правильно указали параметры (в 'Parameters') упаковки файлов, тут уж давайте сами разбирайтесь, как работать с "packer.exe". Моя задача была вам показать, как запустить "packer.exe" с параметрами (параметры были предоставлены в вашем примере) после распаковки файлов, судя по вашему ответу, packer.exe запустился, далее дело за вами. »
Спасибо, разобрался. Вместо "Parameters: {app}/data/00" достаточно было написать просто "Parameters: 00".
Теперь другой вопрос
На нужных папках, которые прописаны в секции [Files], дописать флаг deleteafterinstall (Flags: deleteafterinstall). »
А есть другой способ? Через туже консоль например. Мое приложение после установки будет весить около 33 гигов. Хоть и сказал что папки будут упакованы в архив, но без применения сжатия. Архивы даже немного больше будут весить. И это не изменить.
Тоесть 30 гигов весят папки, +примерно гигов 33 будут весить архивы после запаковки. И всего будет нужно 63 гига просто что б установить приложение. Для экономии места было б удобно удалять папку сразу после того как ее запаковали, а потом преступать к запаковке следующей папки. Так место требуемое для установки сократится в два раза.
vk_k14m@vk, есть мнение, что Вам с такими объёмами и запросами пора бы уже не просто задавать вопросы, но и самому всерьёз взяться за изучение Pascal scripting.
Для экономии места было б удобно удалять папку сразу после того как ее запаковали, а потом преступать к запаковке следующей папки. Так место требуемое для установки сократится в два раза. »
[Run]
Filename: {app}/data/packer.exe; WorkingDir: {app}/data; Parameters: {app}/00; Description: Упаковка файлов...; Flags: waituntilterminated runhidden
Filename: {sys}\CMD.EXE; WorkingDir: {app}/data; Parameters: /C RD /S /Q 00; Description: Упаковка файлов...; Flags: waituntilterminated runhidden
Filename: {app}/data/packer.exe; WorkingDir: {app}/data; Parameters: {app}/01; Description: Упаковка файлов...; Flags: waituntilterminated runhidden
Filename: {sys}\CMD.EXE; WorkingDir: {app}/data; Parameters: /C RD /S /Q 01; Description: Упаковка файлов...; Flags: waituntilterminated runhidden
Filename: {app}/data/packer.exe; WorkingDir: {app}/data; Parameters: {app}/02; Description: Упаковка файлов...; Flags: waituntilterminated runhidden
Filename: {sys}\CMD.EXE; WorkingDir: {app}/data; Parameters: /C RD /S /Q 02; Description: Упаковка файлов...; Flags: waituntilterminated runhidden
И так далее. Удаление папки сразу после ее упаковки осуществляется с помощью командной строки, консольное окно которой так же будет скрыто.
vk_k14m@vk
20-09-2017, 20:03
есть мнение, что Вам с такими объёмами и запросами пора бы уже не просто задавать вопросы, но и самому всерьёз взяться за изучение Pascal scripting. »
Хорошо когда у человека есть свое мнение. Как только я узнаю что такое Pascal scripting так сразу начну его изучать. Но зачем учить весь язык если тебе нужно только несколько предложений?
[Run]
Filename: {app}/data/packer.exe; WorkingDir: {app}/data; Parameters: {app}/00; Description: Упаковка файлов...; Flags: waituntilterminated runhidden
Filename: {sys}\CMD.EXE; WorkingDir: {app}/data; Parameters: /C RD /S /Q 00; Description: Упаковка файлов...; Flags: waituntilterminated runhidden
Filename: {app}/data/packer.exe; WorkingDir: {app}/data; Parameters: {app}/01; Description: Упаковка файлов...; Flags: waituntilterminated runhidden
Filename: {sys}\CMD.EXE; WorkingDir: {app}/data; Parameters: /C RD /S /Q 01; Description: Упаковка файлов...; Flags: waituntilterminated runhidden
Filename: {app}/data/packer.exe; WorkingDir: {app}/data; Parameters: {app}/02; Description: Упаковка файлов...; Flags: waituntilterminated runhidden
Filename: {sys}\CMD.EXE; WorkingDir: {app}/data; Parameters: /C RD /S /Q 02; Description: Упаковка файлов...; Flags: waituntilterminated runhidden
И так далее. Удаление папки сразу после ее упаковки осуществляется с помощью командной строки, консольное окно которой так же будет скрыто. »
Большое спасибо добрый человек. Это пожалуй все что мне нужно было знать...
Как только я узнаю что такое Pascal scripting так сразу начну его изучать. »
«Win-R», «hh.exe "mk:@MSITStore:%ProgramFiles%\Inno%20Setup%205\ISetup.chm::/topic_scriptintro.htm"» (или «hh.exe "mk:@MSITStore:%ProgramFiles(x86)%\Inno%20Setup%205\ISetup.chm::/topic_scriptintro.htm"» — если у Вас x64 ОС), «Enter».
vk_k14m@vk
20-09-2017, 20:44
«Win-R», «hh.exe "mk:@MSITStore:%ProgramFiles%\Inno%20Setup%205\ISetup.chm::/topic_scriptintro.htm"» (или «hh.exe "mk:@MSITStore:%ProgramFiles(x86)%\Inno%20Setup%205\ISetup.chm::/topic_scriptintro.htm"» — если у Вас x64 ОС), «Enter». »
Обожаю английский язык...
vk_k14m@vk
21-09-2017, 23:56
Вопрос. В секции [Files] важна последовательность?
Например такое выражение:
[Files]
Source: "D:\Inno Setup\Installer\1 Main Files\test\testapp.exe"; DestDir: "{app}"; Components: main;
Source: "D:\Inno Setup\Installer\2 Addon\test\testapp.exe"; DestDir: "{app}"; Components: addon;
Где "1 Main Files" файл который устанавливается в любом случае. А где "2 Addon" - файл установится если во время установки поставить "галочку".
Последовательность имеет значение? По логике сначала должен установится
D:\Inno Setup\Installer\1 Main Files\test\testapp.exe
а потом его должен заменить
D:\Inno Setup\Installer\2 Addon\test\testapp.exe
Я прав?
vk_k14m@vk,
Да, влияет на порядок установки. А ещё, группировка однородных файлов повысит коэффициент сжатия при компиляции.
vk_k14m@vk
22-09-2017, 00:18
А ещё, группировка однородных файлов повысит коэффициент сжатия при компиляции. »
Ты имеешь в виду файлов с одинаковым расширением, например *.BMP?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.