PDA

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 [179] 180 181 182 183 184 185 186 187 188

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, Давай скрипт посмотрю

Rikill
17-10-2011, 23:48
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 есть ли новая версия???

Sollar
18-10-2011, 18:17
как обратиться к массиву #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