Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
Гость_Kindly_*
|
17:03:2005, 16:05
|
|
Инопланетный гость |
(Вопрос по Inno Setup 5) Я извиняюсь за вопрос немножко не в тему. Меня интереcует написание скрипта на Pascal следующего характера: Перед запуском инсталлятора нужна проверка реестра на определённый ключ, и если он существует - должен запускаться мастер инсталляции, а если ключ не существует, то должна вылетать мессага, что прога не найдена - жмите OK чтобы покинуть мастер (ну или другой текст). Вобщем вы программеры - для вас скриптик или только секцию кода написать не составит труда. Поможете такому как мне?
mailto:gubei_vadim@list.ru |
|
Сообщение
#1
|
|
![]() |
|
|
4:08:2005, 03:52
|
|
Божественный Группа: Модеры Сообщений: 937 Регистрация: 19:11:2003 Пользователь №: 133 Репутация: 16
|
Цитата как привязать заранее известные размеры устанавливаемых в один каталог программ к описанию в диалоге "Установка и удаление программ"? Windows данные о размере программы берет из размера каталога в котором размещена программа, а не из реестра, так что обмануть ее тут трудно, проще в вашей программе установки контролировать, чтобы программа устанавливалась в отдельный каталог. |
|
Сообщение
#121
|
|
|
Гость_Dim_*
|
4:08:2005, 09:32
|
|
Инопланетный гость |
У меня вроде маленький, не сложный вопрос, но найти ответ в хелпе не удалось. Собственно вопрос:
Я создал свою страничку с выбором директории и проверкой пути. Возможно ли в дальнейшем использовать этот путь вместо константы {app} (при создании ярлыков к примеру). т.е. как из раздела [code] переопределить {app}? |
|
Сообщение
#122
|
|
|
Гость_Guest_*
|
4:08:2005, 12:26
|
|
Инопланетный гость |
To Zubr:
Цитата проще в вашей программе установки контролировать, чтобы программа устанавливалась в отдельный каталог. Видимо, да... Цитата Windows данные о размере программы берет из размера каталога в котором размещена программа, а не из реестра, так что обмануть ее тут трудно На самом деле данные о размере программы берутся виндой из каталога, который в конечном итоге мы сами и можем задать. Запихнув в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MyProgram в значение InstallLocation путь к директории, мы тем самым принуждаем Windows обсчитать на предмет размера именно тот каталог, размер которого мы хотим отобразить... |
|
Сообщение
#123
|
|
|
Гость_Dim_*
|
4:08:2005, 12:38
|
|
Инопланетный гость |
Цитата(Dim @ 4:08:2005, 11:32 ) У меня вроде маленький, не сложный вопрос, но найти ответ в хелпе не удалось. Собственно вопрос: Я создал свою страничку с выбором директории и проверкой пути. Возможно ли в дальнейшем использовать этот путь вместо константы {app} (при создании ярлыков к примеру). т.е. как из раздела [code] переопределить {app}? Сам разобрался В разеделе [code] была вставлена функция: __________ function GetDir(tmp: string): String; begin Result := Page.Values[0]; end; __________ А вместо {app} используем {code:GetDir} |
|
Сообщение
#124
|
|
|
|
4:08:2005, 19:37
|
|
Божественный Группа: Модеры Сообщений: 937 Регистрация: 19:11:2003 Пользователь №: 133 Репутация: 16
|
Цитата На самом деле данные о размере программы берутся виндой из каталога, который в конечном итоге мы сами и можем задать. Запихнув в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MyProgram в значение InstallLocation путь к директории, мы тем самым принуждаем Windows обсчитать на предмет размера именно тот каталог, размер которого мы хотим отобразить... Ну так и я о том же |
|
Сообщение
#125
|
|
|
Гость_Guest_Юрий_*_*
|
5:08:2005, 07:53
|
|
Инопланетный гость |
Существует ли способ убрать слово "Setup" в пункте Описание в свойствах файла инсталлятора?
К примеру, для инсталлятора с таким кусочком кода в свойствах написано "My Program Setup"...
|
|
Сообщение
#126
|
|
|
|
6:08:2005, 05:44
|
|
Божественный Группа: Модеры Сообщений: 937 Регистрация: 19:11:2003 Пользователь №: 133 Репутация: 16
|
|
|
Сообщение
#127
|
|
|
Гость_Kindly_*
|
6:08:2005, 12:16
|
|
Инопланетный гость |
Вопрос немного не по теме, но знать хочется: Почему минимальный размер инсталлятора NSIS 50 kb, а Inno Setup 300 kb и можно ли вообще его уменьшить?
|
|
Сообщение
#128
|
|
|
|
7:08:2005, 06:19
|
|
Божественный Группа: Модеры Сообщений: 937 Регистрация: 19:11:2003 Пользователь №: 133 Репутация: 16
|
Цитата Вопрос немного не по теме, но знать хочется: Почему минимальный размер инсталлятора NSIS 50 kb, а Inno Setup 300 kb и можно ли вообще его уменьшить? Аналогия минимальный размер exe-файла скомпилированный в Delphi 300 kB, а в VC 20 kB. Скорее всего Inno Setup создавался в среде типа Delphi. Уменьшить не получится, проще написать свой инсталлятор. Кстати, в VC Net очень неплохой Wizard на проект инсталлятора. |
|
Сообщение
#129
|
|
|
Гость_Kindly_*
|
12:08:2005, 07:11
|
|
Инопланетный гость |
Известно, что при нажатии кнопки "Отмена" при установке, создается откат действий. Вопрос следующий: возможно ли создать откат при деинсталляции?
|
|
Сообщение
#130
|
|
|
|
14:08:2005, 04:18
|
|
Божественный Группа: Модеры Сообщений: 937 Регистрация: 19:11:2003 Пользователь №: 133 Репутация: 16
|
Откат деинсталляции можно сделать до процесса удаления файлов, что в принципе деинсталлятор и предлагает. Если вам нужны еще какие то события деинсталлятора, то можете попробовать юзать функции:
function InitializeUninstall(): Boolean; procedure DeinitializeUninstall(); procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); |
|
Сообщение
#131
|
|
|
Гость_Kindly_*
|
14:08:2005, 06:57
|
|
Инопланетный гость |
Zubr, спасибо - буду пробовать.
Вот какой инструмент я нашел для Inno Setup 5 (3.7М). ]]>http://www.hisoft2000.de/sm5/ScriptMaker5_full.exe]]> Генератор скриптов в общем говоря (бесплатный). Включает дополнительный модуль для различных наворотов, а именно: сплеш-заставка, измение изображений для каждой страницы в отдельности, проигрывание wave и midi в фоновом режиме, продвинутая деинсталляция (с восстановлением и модификацией) и многое другое. Рекомендую всем. |
|
Сообщение
#132
|
|
|
Гость_Kindly_*
|
26:08:2005, 06:03
|
|
Инопланетный гость |
У меня появилась такая проблемка: при упаковке одной игрушки, которая занимает несколько CD, программа разбивает архивы на три диска, но даже при использовании максимального метода сжатия (lzma/ultra), она "отводит" оставшиеся 20 MB для четвертого CD. Это мне абсолютно не нужно. Но создав автономный самораспаковывающийся модуль 7Z, мне удалось уместить игру на 3 CD. Этот ехе-архив запускать при установке с последующим удалением не проблема, проблема в том, как запустить его так, чтобы началось сразу его выполнение, т.е. извлечение файлов. Насколько мне подсказывавает собственная интуиция, провернуть это можно с помощью параметров командной строки, вот только пока с ней не подружился, поэтому если возникала у кого-нибудь подобная ситуация, просьба помочь мне в ней разобраться.
|
|
Сообщение
#133
|
|
|
Гость_Snаке_*
|
27:08:2005, 21:54
|
|
Инопланетный гость |
[QUOTE]
...проблема в том, как запустить его так, чтобы началось сразу его выполнение, т.е. извлечение файлов. Насколько мне подсказывавает собственная интуиция, провернуть это можно с помощью параметров командной строки, вот только пока с ней не подружился, поэтому если возникала у кого-нибудь подобная ситуация, просьба помочь мне в ней разобраться. Извиняюсь, если что-то не так понял. Я делал инсталлятор, в котором сначала я копировал на жесткий sfx-архив, а затем запускал его с параметрами коммандной строки "-e -ao -y", где е-распаковка в текущую папку, ао-перезапись существующих файлов, чтобы не появилось окна с вопросом о перезаписи файла, y-пропуск начального диалога (появится сразу окно прогресса). |
|
Сообщение
#134
|
|
|
Гость_Snаке_*
|
27:08:2005, 21:54
|
|
Инопланетный гость |
Не подскажет ли кто, есть ли программка наподобии Inno Unpacker, но чтобы можно было востаноить секцию [Code], вообще реально восстановить код инсталлятора, хотя бы частично?
|
|
Сообщение
#135
|
|
|
Гость_Kindly_*
|
28:08:2005, 07:05
|
|
Инопланетный гость |
Snаке, спасибо большое, буду пробовать.
Цитата Не подскажет ли кто, есть ли программка наподобии Inno Unpacker, но чтобы можно было востаноить секцию Code, вообще реально восстановить код инсталлятора, хотя бы частично? В смысле получается закриптованный файл CompiledCode.bin, да? Есть смысл написать распаковщик/конвертер в TXT (но это уже не по моей специальности ]]>http://prdownloads.sourceforge.net/innounp/ifps3_disasm.rar]]> Но он очень кривой и не дружит с пятой версией, да и к тому же извлекает в АСМе - жуть |
|
Сообщение
#136
|
|
|
Гость_Snаке_*
|
28:08:2005, 22:11
|
|
Инопланетный гость |
Подскажите, пожалуйста, кто-нибудь ответ по такому вопросу. На странице wpInstalling я создал второй progress-bar (просто так, для вида) и его движение ни от чего не должно зависить. Как заставить его двигаться и изменять скорость его движения? Также при отмене установки родной progress-bar скрывается и как сделать, чтобы мой тоже скрывался?
|
|
Сообщение
#137
|
|
|
Гость_Snаке_*
|
28:08:2005, 22:14
|
|
Инопланетный гость |
Спасибо Kindly за программку, обязательно попробую. Может еще сам что-нибудь найду.
|
|
Сообщение
#138
|
|
|
Гость_Snаке_*
|
28:08:2005, 22:27
|
|
Инопланетный гость |
Чтобы тебе, Kindly, самому не возиться, выкладываю скрипт для распаковки 7Z архива
|
|
Сообщение
#139
|
|
|
Гость_Kindly_*
|
29:08:2005, 07:00
|
|
Инопланетный гость |
Snаке, у меня все прекрасно работает с установленным параметром '-y'. Я архив в самом 7z архиваторе создавал, поэтому остальные команды не нужны. Запускаю вообще-то я архив из секции [Run], но предложенный способ тоже не хуже
Цитата На странице wpInstalling я создал второй progress-bar (просто так, для вида) и его движение ни от чего не должно зависить. Как заставить его двигаться и изменять скорость его движения? Также при отмене установки родной progress-bar скрывается и как сделать, чтобы мой тоже скрывался? Есть пример прогресс-бара (его выполнение и скорость выполнения) в одном из скриптов в папке с примерами. |
|
Сообщение
#140
|
|
|
Гость_fiot_*
|
31:08:2005, 07:09
|
|
Инопланетный гость |
ни кто не знает,
не коректно отображается битмап ? |
|
Сообщение
#141
|
|
|
Гость_Kindly_*
|
1:09:2005, 06:15
|
|
Инопланетный гость |
Цитата Как заставить его двигаться и изменять скорость его движения? Хм... Действительно - как задать выполнение нового прогресс-бара? Один из скриптов в примерах описывает выполнение новой страницы прогресса, а не прогресс-бара в отдельности. Делаем новую полосу прогресса (ну уж как смог). Мне кажется, что выполнение прогресс-бара должно осуществляться как-то по-другому, наверное, должна быть какая-то функция, которая бы заполняла полосу прогресса, например, от 0 до 100 (от начала до конца) в определенный промежуток времени, но вот теперешние способности у меня позволяют только предполагать. Способ скрытия второго прогресс-бара при нажатии на кнопку Отмена в процессе установки. В этом примере один недостаток - при нажатии на кнопку Отмена, не будет выведено уведомление о подтверждении Отмены. Может будут у кого варианты, как все проделать без отключения сообщения?
|
|
Сообщение
#142
|
|
|
Гость_Snаke_*
|
3:09:2005, 17:21
|
|
Инопланетный гость |
Здраствуйте. Я хочу задать вам, Zubr, целых три вопроса:
1. Мне интересно, что это за процедура ShowAboutBox и как ее использовать. Сам я ответ в Help'е не нашел; 2. Можно ли аналогично инсталлатору как нибудь изменить окно деинсталляции. Конкретно меня интересует, как можно убрать в левом верхнем углу изображение иконки инсталлятора. В отличии от WizardForm(и прочее) компонент UninstProgressForm вроде не поддерживается, но хотелось бы узнать мнение знающего человека; 3. Самый гиморный вопрос. Может объясню немного путанно, но постараюсь. На второй странице форума вы написали скрипт создания фонового рисунка на MainForm, но у него есть один недостаток. Когда запускаешь инсталлятор, одновременно появляются MainForm и WizardForm, а через некоторое время на MainForm создается рисунок, но в этот промежуток времени виден отвратительный синий(или какой-либо другой) фоновый цвет MainForm. Я видел всего два инсталлятора(игра DOOM 3 и программа Quest3D 2.0b), в которых реализован какой-то другой принцип - MainForm и фоновый рисунок на ней появляются ОДНОВРЕМЕННО, а через какое-то мгновение появляется окно WizardForm, т.е. фоновый синий цвет не виден. Подскажите, пожалуйста как это сделано, а то я сам провозился наверное с середины лета, но так и не разобрался. Буду очень благодарен если вы поможете мне с их решением! Отдельное большое спасибо Kindly за помощь! |
|
Сообщение
#143
|
|
|
Гость_Snаke_*
|
3:09:2005, 18:02
|
|
Инопланетный гость |
Цитата(fiot @ 31:08:2005, 09:09 ) ни кто не знает, не коректно отображается битмап ? Немного непонятна эта часть скрипта. Напиши, на какой форме ты хочешь создать рисунок! |
|
Сообщение
#144
|
|
|
Гость_Snаke_*
|
3:09:2005, 18:24
|
|
Инопланетный гость |
Чуть не забыл. Если ты, fiot, хочешь создать рисунок на странице инсталлятора, также опиши где конкретно должен располагаться рисунок и его размеры. Возможно я знаю ответ на твой вопрос.
|
|
Сообщение
#145
|
|
|
Гость_Snаke_*
|
3:09:2005, 23:59
|
|
Инопланетный гость |
Позволю себе, Kindly, чуть подправить твой скрипт с progress-bar'ом. Попробуй мой скрипт(небольшая переделка под Wise Installation Wizard), думаю понравится. Также я решил проблему со скрытием progress-bar'а. Сначала у меня получалось, что progress-bar скрывался при нажатии "Отмена", но при нажатии в месаге(Выход из программы установки) на "Нет" скрытый progress-bar уже появлялся. Как изменить стандартную месагу я не понял и скрыл ее, и затем просто сделал свою.
К слову, стало гораздо проще заменить тип сообщения(mbInformation, mbConfirmation и т.д.), если конечно захочешь. Теперь осталось только решить проблему с движением progress-bar'а. |
|
Сообщение
#146
|
|
|
|
4:09:2005, 08:58
|
|
Божественный Группа: Модеры Сообщений: 937 Регистрация: 19:11:2003 Пользователь №: 133 Репутация: 16
|
Snаke
Цитата 1. Мне интересно, что это за процедура ShowAboutBox и как ее использовать. Сам я ответ в Help'е не нашел; Эта процедура вызывает информационное окно об авторстве и версии Inno Setup. Вам это надо? Цитата 2. Можно ли аналогично инсталлатору как нибудь изменить окно деинсталляции. Конкретно меня интересует, как можно убрать в левом верхнем углу изображение иконки инсталлятора. В отличии от WizardForm(и прочее) компонент UninstProgressForm вроде не поддерживается, но хотелось бы узнать мнение знающего человека; Похоже, что такой возможности нет. Цитата 3. Самый гиморный вопрос. Может объясню немного путанно, но постараюсь. На второй странице форума вы написали скрипт создания фонового рисунка на MainForm, но у него есть один недостаток. Когда запускаешь инсталлятор, одновременно появляются MainForm и WizardForm, а через некоторое время на MainForm создается рисунок, но в этот промежуток времени виден отвратительный синий(или какой-либо другой) фоновый цвет MainForm. Я видел всего два инсталлятора(игра DOOM 3 и программа Quest3D 2.0b), в которых реализован какой-то другой принцип - MainForm и фоновый рисунок на ней появляются ОДНОВРЕМЕННО, а через какое-то мгновение появляется окно WizardForm, т.е. фоновый синий цвет не виден. Подскажите, пожалуйста как это сделано, а то я сам провозился наверное с середины лета, но так и не разобрался. Цитата Подскажите, пожалуйста, кто-нибудь ответ по такому вопросу. На странице wpInstalling я создал второй progress-bar (просто так, для вида) и его движение ни от чего не должно зависить. Как заставить его двигаться и изменять скорость его движения? Чтобы ваш progress-bar корректно двигался, надо двигать его в отдельном потоке, то есть создать процедуру потока: Запускается поток с помощью функции API CreateThread, которая находится в Kernel32.dll. Как выдрать функцию из dll смотрите пример выше (с функцией GetSystemMetrics), а также в примерах к Inno Setup (CodeDll.iss). Полный код писать нет времени. |
|
Сообщение
#147
|
|
|
Гость_Snаke_*
|
4:09:2005, 14:26
|
|
Инопланетный гость |
Спасибо, zubr, за скрипт с рисунком. С progress-bar'ом еще предстоит разобраться. Но возникает другой маленький вопросик. Вкратце поясните, что означают эти размеры: width:=GetSystemMetrics(61) и height:=GetSystemMetrics(62).
При использовании размеров 61х62 была видна Панель задач, заменив их на 61х60, получил Fullscreen. |
|
Сообщение
#148
|
|
|
|
4:09:2005, 15:00
|
|
Божественный Группа: Модеры Сообщений: 937 Регистрация: 19:11:2003 Пользователь №: 133 Репутация: 16
|
Функция API GetSystemMetrics возвращает информацию о рабочей среде Windows. С параметрами SM_CXMAXIMIZED = 61 и SM_CYMAXIMIZED = 62 функция возвращает размеры развернутого окна по умолчанию. 60 - это вы применили параметр SM_CYMAXTRACK - максимальный размер Y при ручном масштабировании. Если вы хотите, чтобы фоновое окно закрывало и панель задач, корректнее было бы применить параметры SM_CXSCREEN=0, SM_CYSCREEN=1.
|
|
Сообщение
#149
|
|
|
Гость_Snаke_*
|