Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]
No4noylis
17-10-2011, 19:39
ntrx, Скрипт давай
Dark_Delphin
17-10-2011, 19:44
No4noylis, Скрипт (http://rghost.ru/25986481)
No4noylis
17-10-2011, 19:56
ntrx, Держи (http://rghost.ru/25988551), :)
Dark_Delphin
17-10-2011, 20:02
No4noylis, спасибо большое.
А мож сказать что сделал? Просто на старнице ДИРГРУП та же проблемка)
No4noylis
17-10-2011, 20:30
ntrx,
Это DirEditLabel.Caption := MinimizePathName(WizardForm.DirEdit.Text, DirEditLabel.Font, DirEditLabel.Width); я перенес в процедуру вычисления свободного места, для того, чтоб путь обновлялся при каждом изменении DirEdit. Для GroupEdit нужно сделать подобное:
procedure GroupEditCaption(Sender: TObject);
begin
GroupEditLabel.Caption := MinimizePathName(WizardForm.GroupEdit.Text, GroupEditLabel.Font, GroupEditLabel.Width);
end;
procedure InitializeWizard();
begin
wizardform.GroupEdit.OnChange:=@GroupEditCaption;
end;
insombia
17-10-2011, 21:11
Вот есть проблема что кнопка обзор не такая по длинe как остальные как исправить?
http://i29.fastpic.ru/big/2011/1017/18/9ed0e3bf4aa29b099ec90fbcc668eb18.jpg
valyok666
17-10-2011, 21:29
insombia, размеры смотри что ещё то
Dark_Delphin
17-10-2011, 23:04
Подскажите пожалуйста, что это за ошибку выбило после установки?
http://i29.fastpic.ru/big/2011/1017/98/64899bd687074284b1123a42179cae98.png
Заранее спасибо.
Edison007
17-10-2011, 23:42
ntrx, Давай скрипт посмотрю
ntrx, бывает такое просто так, не зависимо от скрипта. Ты сначала перезагрузись, перекомпилируй. У меня тоже такое было)
[hr]
Не мог бы кто написать, что это ПОДРОБНО значит. Ясно, что с оперативой. Но как это там происходит?
murlakatamenka
18-10-2011, 02:19
ребята, такой вопрос.
для лого на стекле использую Fairy. Логотип появляется раньше формы. как можно сделать, чтобы логотип появлялся вместе с формой, как это реализовано у R.G. Catalyst.
Подскажите логику работы инсталлятора для реализации задуманного. Стекло и fairy идут своими процедурами в InitializeWizard, процедура fairy идёт самой последней. Посмотрев функции и процедуры Fairy, можно понять, что надо как-то юзать HideFairy/ShowFairy или StopFairy/ResumeFairy, пробовать прятать WizardForm. В общем, помогите разобраться, я идею реализую.
--------------------------
второй вопрос связан с установкой доп по при использовании ISDone
как красиво это реализовать? вопрос в том, что ISDone распаковывает архивы на этапе ssInsatll, затем прячется его кнопка отмены установки и все котролы (прогрессбар, лейблы времени), показывается и делается неактивной родная кнопка отмены. т.е. если я захочу прервать установку, то уже не смогу. насколько знаю, можно установку доп по и вовсе реализовать через секцию кода. примерно так (очень примерно): IfIsComponentSelected('имя_компонента') then begin ShellExec(...) end; + в случае VCR делается Check: IsWin64 для установки vcredist_x32/64
--------------------------
третий вопрос про ISDone. когда не нужно время установки, я просто не создаю лэйблытаймы и закомменчиваю records.inf. но в этом случае при установке отображается имя превьюшки windows 7 - Установка: тестовый прогон. Как убрать это ? Если что под превью имел ввиду:
Наведите указатель мыши на кнопку панели задач — отобразится эскиз предварительного просмотра (в том числе и для воспроизводимого видео). Затем наведите его на эскиз — он преобразуется в режим полноэкранного просмотра.
Gnom_aka_Lexander
18-10-2011, 08:19
как это реализовано у R.G. Catalyst. »
R.G. Catalyst используют свою длл-ку для этого, которая специально для них была написана. Делай лого побольше размером, это единственный способ борьбы с запозданием окна WizardForm.как красиво это реализовать? »
Через сам ISDone. Тогда и по будет на прогрессбаре плавно отображаться, и отмена останется.
[Tasks]
Name: po; Description: Установить дополнительное ПО
Name: po\Runtime; Description: Microsoft Visual C++
Name: po\PhysX; Description: NVIDIA PhysX
Name: po\DX9; Description: Microsoft DirectX
...............................
// Подготавливаем переменную, содержащую всю информацию о выделенных задачах для ISDone.dll
// максимум 96 компонентов.
Comps1:=0; Comps2:=0; Comps3:=0;
TmpValue:=1;
if IsTaskSelected('po\Runtime') then Comps1:=Comps1+TmpValue; //компонент 1
TmpValue:=TmpValue*2;
if IsTaskSelected('po\PhysX') then Comps1:=Comps1+TmpValue; //компонент 2
TmpValue:=TmpValue*2;
if IsTaskSelected('po\DX9') then Comps1:=Comps1+TmpValue; //компонент 3
.........................................
if not ISExec ( 1, 0, 0, ExpandConstant('{src}\Redist\DirectX.exe'), '', ExpandConstant('{src}'),'Microsoft DirectX',false) then break;
if not ISExec ( 2, 0, 0, ExpandConstant('{src}\Redist\PhysX.exe'), '', ExpandConstant('{src}'),'Nvidia PhysX',false) then break;
if not ISExec ( 3, 0, 0, ExpandConstant('{src}\Redist\VCR_Ext_x86_x64.exe'), '/S', ExpandConstant('{src}\Redist'), 'Microsoft Visual C++',false) then break;
третий вопрос про ISDone »WizardForm.Caption:='Твоя надпись'; - найди эту строчку и забей там то, что тебе нужно.
murlakatamenka
18-10-2011, 14:16
как красиво это реализовать?
Через сам ISDone. Тогда и по будет на прогрессбаре плавно отображаться, и отмена останется. »
а это как?
кажется, понял, через ISExec + связь с компонентами (как и в случае установки, например, разных языков озвучки).
valyok666
18-10-2011, 15:28
Лександер, можно узнать насчёт isPicture есть ли новая версия???
как обратиться к массиву #org[i] из кода?
нужно что-то типа
function GetWizardSetupType (Default:String):Integer;
begin
for i := 0 to {#CountSection} do
begin
if ('{#org[i]}' = WizardSetupType(false)) then
msgbox(inttostr(i),mbInformation, MB_OK);
Result:= i;
end
end;
как передать индекс переменной в коде?
Sotonisto
18-10-2011, 22:18
Возможно, просьба прозвучит нагло, но кто может с этого скрипта Catalyst (http://rghost.ru/23912451) (его выкладывали ранее):
а) Убрать слайдшоу и распаковку FreeArc, 7zip и пр. (делаю инсталл для себя, так что эти функции мне не интересны)
б) Добавить прогресс бар (мождо даже стандартный)
Сколько бы раз я своими кривыми ручонками не лез в скрип - результат всегда один... х_х
Прошу помочь и заранее благодарен.
P.S.: Знаю, что обычно все наоборот просят добавить FA и т.д., но меня больше привлекает визуальная сторона инсталла, нежели функциональность :)
murlakatamenka
18-10-2011, 22:39
Sotonisto, в этом скрипте слайдшоу идёт на этапе ssInstall с помощью ISSlideshow, его убрать легко
стандарнтый прорессбар скрывается и вместо него создаётся новый (вместе с другими кастомными контролами; смотрите функции CreateControls и HideControls)
распаковка идёт через ISDone, посмотрите скрипт, который с ним идёт и легко уберёте всё исдонное из скрипта.
и от фриарка грех отказываться, и жмёт хорошо, и репаки удобнее делать: дизайн инсталла отдельно, упаковка отдельно. легче тестировать и компилить только сетапку надо. простой пример. сделали инсталлятор, всё готово и проверено, скомпилили, а потом посмотрели, что, например, текст неправильный (например Battlefeild 3, а не Battlefield 3 :)). казалось бы мелочь, но заново компилить 20 минут.
P.S.: Знаю, что обычно все наоборот просят добавить FA и т.д., но меня больше привлекает визуальная сторона инсталла, нежели функциональность »
isdone никак визуальную сторону не ухудшает ведь, а делать удобнее.
---------------
убрал слайдшоу и всё, что с ним связано (т.е. dll и слайды) - http://rghost.ru/26167341
6apakyda
19-10-2011, 02:08
Здраствуйте
Меня попросили сделать установщик:
Запускаем установку >появляется окно где предлагается поменять стартовую страницу > после чего запускается установка exe файла (именно файла а не набора файлов) и всё.
Очень нужно, помогите пожалуйста, я в этом ничего не понимаю и готов оплатить труды за написание такого кода.
Заранее спасибо
murlakatamenka
19-10-2011, 03:38
Лександер, только сейчас заметил "читать дальше" с кодом :shuffle:
-------------------------------------------------------------------------------
появляется окно где предлагается поменять стартовую страницу
домашнюю страницу браузера, это имеется ввиду?
типа появляется окошко с надписью "Домашняя страница будет изменена на "адрес_новой_homepage"" с кнопками OK и Cancel и вне зависимости от выбора пользователя начинается установка программы.
---------------------------------------
для смены homepage IE (при компиляции [_Code] заменить на )
[CODE]; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "My Program"
#define MyAppVersion "1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "MyProg.exe"
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{12C06398-3F34-4DDE-BD66-6D263C0FC8FA}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
Source: "C:\Program Files (x86)\Inno Ultra\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, "&", "&&")}}"; Flags: nowait postinstall skipifsilent
[_Code]
procedure InitializeWizard();
begin
if MsgBox('Сменить домашнюю страницу на {#MyAppURL} ?',mbconfirmation, mb_yesno) = IDYES then
begin
RegWriteStringValue(HKEY_CURRENT_USER, 'SOFTWARE\Microsoft\Internet Explorer\Main',
'Start Page', ExpandConstant('{#MyAppURL}'));
end;
end;
6apakyda
19-10-2011, 10:53
Да, всё верно, домашнюю страницу поменять, но с предложением (галочка) Поменять стартовую страницу на www_ru?
Спасибо за код. Только вот хотелось бы чтобы без предложения запустить программу, а чтобы сразу после распаковки файла, exe сразу запускалась. Вечером продолжу танцевать с бубномhttp://www.pajero4x4.ru/bbs/phpBB2/images/smilies/Hyron_05.gif
-------------------
С помощью команды DisableFinishedPage=yes убрал последнее окно, после чего запускается exe без запроса.
Галочки с предложением заменить страницу нету, но и страница не меняется =(
И ещё я не пойму, почему когда я заменил DefaultDirName={pf}\{#MyAppName} на .....={tmp}\{#MyAppName} ничего не изменилось
-------------------
Поставил DefaultDirName=no и поменял в разделе [Files] DestDir {app} на DestDir {tmp} и также в [Run], заработало.
С заменой стартовой страницы "разобрался", изначально пропустил фразу (при компиляции [_Code] заменить на [code]) »
Спасибо огромное за помощь! На самом деле я понял что по чуть чуть и можно многому научиться, главное читать по больше
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC