• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Написание скрипта для инсталлятора

  • Автор темы Kindly
  • Дата начала
Статус
Закрыто для дальнейших ответов.
Z

zubr

как привязать заранее известные размеры устанавливаемых в один каталог программ к описанию в диалоге "Установка и удаление программ"?
Windows данные о размере программы берет из размера каталога в котором размещена программа, а не из реестра, так что обмануть ее тут трудно, проще в вашей программе установки контролировать, чтобы программа устанавливалась в отдельный каталог.
 
D

Dim

У меня вроде маленький, не сложный вопрос, но найти ответ в хелпе не удалось. Собственно вопрос:
Я создал свою страничку с выбором директории и проверкой пути.
Возможно ли в дальнейшем использовать этот путь вместо константы {app} (при создании ярлыков к примеру).
т.е. как из раздела
Код:
 переопределить {app}?
 
G

Guest

To Zubr:
проще в вашей программе установки контролировать, чтобы программа устанавливалась в отдельный каталог.
Видимо, да...
Windows данные о размере программы берет из размера каталога в котором размещена программа, а не из реестра, так что обмануть ее тут трудно
На самом деле данные о размере программы берутся виндой из каталога, который в конечном итоге мы сами и можем задать. Запихнув в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MyProgram в значение InstallLocation путь к директории, мы тем самым принуждаем Windows обсчитать на предмет размера именно тот каталог, размер которого мы хотим отобразить...
 
D

Dim

<!--QuoteBegin-Dim+4:08:2005, 11:32 -->
<span class="vbquote">(Dim @ 4:08:2005, 11:32 )</span><!--QuoteEBegin-->У меня вроде маленький, не сложный вопрос, но найти ответ в хелпе не удалось. Собственно вопрос:
Я создал свою страничку с выбором директории и проверкой пути.
Возможно ли в дальнейшем использовать этот путь вместо константы {app} (при создании ярлыков к примеру).
т.е. как из раздела
Код:
 переопределить {app}?
[right][snapback]22938" rel="nofollow" target="_blank[/snapback][/right][/quote]

Сам разобрался <_< строчка в справке была не по глазам...
В разеделе [code] была вставлена функция:
__________
function GetDir(tmp: string): String;
begin
Result := Page.Values[0];
end;
__________
А вместо {app} используем {code:GetDir} :)
 
Z

zubr

На самом деле данные о размере программы берутся виндой из каталога, который в конечном итоге мы сами и можем задать. Запихнув в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MyProgram в значение InstallLocation путь к директории, мы тем самым принуждаем Windows обсчитать на предмет размера именно тот каталог, размер которого мы хотим отобразить...
Ну так и я о том же :(
 
G

Guest_

Существует ли способ убрать слово "Setup" в пункте Описание в свойствах файла инсталлятора?
К примеру, для инсталлятора с таким кусочком кода
Код:
[Setup]
AppName=My Program
в свойствах написано "My Program Setup"...
 
Z

zubr

Убрать можно подменив ресурс, как обсуждалось link removed
 
K

Kindly

Вопрос немного не по теме, но знать хочется: Почему минимальный размер инсталлятора NSIS 50 kb, а Inno Setup 300 kb и можно ли вообще его уменьшить?
 
Z

zubr

Вопрос немного не по теме, но знать хочется: Почему минимальный размер инсталлятора NSIS 50 kb, а Inno Setup 300 kb и можно ли вообще его уменьшить?
Аналогия минимальный размер exe-файла скомпилированный в Delphi 300 kB, а в VC 20 kB. Скорее всего Inno Setup создавался в среде типа Delphi. Уменьшить не получится, проще написать свой инсталлятор. Кстати, в VC Net очень неплохой Wizard на проект инсталлятора.
 
K

Kindly

Известно, что при нажатии кнопки "Отмена" при установке, создается откат действий. Вопрос следующий: возможно ли создать откат при деинсталляции?
 
Z

zubr

Откат деинсталляции можно сделать до процесса удаления файлов, что в принципе деинсталлятор и предлагает. Если вам нужны еще какие то события деинсталлятора, то можете попробовать юзать функции:
function InitializeUninstall(): Boolean;
procedure DeinitializeUninstall();
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
 
K

Kindly

Zubr, спасибо - буду пробовать.
Вот какой инструмент я нашел для Inno Setup 5 (3.7М).

Генератор скриптов в общем говоря (бесплатный). Включает дополнительный модуль для различных наворотов, а именно: сплеш-заставка, измение изображений для каждой страницы в отдельности, проигрывание wave и midi в фоновом режиме, продвинутая деинсталляция (с восстановлением и модификацией) и многое другое. Рекомендую всем.
 
K

Kindly

У меня появилась такая проблемка: при упаковке одной игрушки, которая занимает несколько CD, программа разбивает архивы на три диска, но даже при использовании максимального метода сжатия (lzma/ultra), она "отводит" оставшиеся 20 MB для четвертого CD. Это мне абсолютно не нужно. Но создав автономный самораспаковывающийся модуль 7Z, мне удалось уместить игру на 3 CD. Этот ехе-архив запускать при установке с последующим удалением не проблема, проблема в том, как запустить его так, чтобы началось сразу его выполнение, т.е. извлечение файлов. Насколько мне подсказывавает собственная интуиция, провернуть это можно с помощью параметров командной строки, вот только пока с ней не подружился, поэтому если возникала у кого-нибудь подобная ситуация, просьба помочь мне в ней разобраться.
 
S

Sn

...проблема в том, как запустить его так, чтобы началось сразу его выполнение, т.е. извлечение файлов. Насколько мне подсказывавает собственная интуиция, провернуть это можно с помощью параметров командной строки, вот только пока с ней не подружился, поэтому если возникала у кого-нибудь подобная ситуация, просьба помочь мне в ней разобраться.

Извиняюсь, если что-то не так понял. Я делал инсталлятор, в котором сначала я копировал на жесткий sfx-архив, а затем запускал его с параметрами коммандной строки "-e -ao -y", где е-распаковка в текущую папку, ао-перезапись существующих файлов, чтобы не появилось окна с вопросом о перезаписи файла, y-пропуск начального диалога (появится сразу окно прогресса).
 
S

Sn

Не подскажет ли кто, есть ли программка наподобии Inno Unpacker, но чтобы можно было востаноить секцию
Код:
[/b], вообще реально восстановить код инсталлятора, хотя бы частично?
 
K

Kindly

Snаке, спасибо большое, буду пробовать.
Не подскажет ли кто, есть ли программка наподобии Inno Unpacker, но чтобы можно было востаноить секцию Code, вообще реально восстановить код инсталлятора, хотя бы частично?
В смысле получается закриптованный файл CompiledCode.bin, да? Есть смысл написать распаковщик/конвертер в TXT (но это уже не по моей специальности :) ). Есть какой-то распаковщик здесь:

Но он очень кривой и не дружит с пятой версией, да и к тому же извлекает в АСМе - жуть :) .
 
S

Sn

Подскажите, пожалуйста, кто-нибудь ответ по такому вопросу. На странице wpInstalling я создал второй progress-bar (просто так, для вида) и его движение ни от чего не должно зависить. Как заставить его двигаться и изменять скорость его движения? Также при отмене установки родной progress-bar скрывается и как сделать, чтобы мой тоже скрывался?
 
S

Sn

Спасибо Kindly за программку, обязательно попробую. Может еще сам что-нибудь найду.
 
S

Sn

Чтобы тебе, Kindly, самому не возиться, выкладываю скрипт для распаковки 7Z архива:). Кстати, только увидел, что ошибся - вместо неправильной команды "ао" напиши "аоа" как показано ниже.

Код:
[Files]
Source: "sfx.exe"; DestDir: "{app}"; AfterInstall: MyAfterInstall; Flags: ignoreversion deleteafterinstall

[Code]
procedure MyAfterInstall();
var
ResultCode: Integer;
begin
begin
Exec(ExpandConstant('{app}\sfx.exe'), '-e -aoa -y', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
end
end;
 
K

Kindly

Snаке, у меня все прекрасно работает с установленным параметром '-y'. Я архив в самом 7z архиваторе создавал, поэтому остальные команды не нужны. Запускаю вообще-то я архив из секции [Run], но предложенный способ тоже не хуже :).
На странице wpInstalling я создал второй progress-bar (просто так, для вида) и его движение ни от чего не должно зависить. Как заставить его двигаться и изменять скорость его движения? Также при отмене установки родной progress-bar скрывается и как сделать, чтобы мой тоже скрывался?
Есть пример прогресс-бара (его выполнение и скорость выполнения) в одном из скриптов в папке с примерами.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!