Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 6]
Ребят... а реально ли в установщике сделать галку .."Установить обои на рабочий стол" с соответствующим функционалом?
El Sanchez, спасибо.)
А на счет смены кодировки при сохранении текста в файл никто не подскажет?
Farser21
09-12-2013, 14:24
Всем привет, вопрос такой.
В стандартном установщике, когда идет странице выбора компонентов, очень маленькое окно, подскажите как его сделать больше? Чтобы е нужно было постоянно прокручивать бегуной.
В стандартном установщике, когда идет странице выбора компонентов, очень маленькое окно, подскажите как его сделать больше? Чтобы е нужно было постоянно прокручивать бегуной »
Можете настроить это окно как душе угодно.
ComponentsList := TLabel.Create(WizardForm);
with ComponentsList do begin
WizardForm.ComponentsList.Left:= ScaleX(30)///положение панели
WizardForm.ComponentsList.Top:= ScaleY(100);
WizardForm.ComponentsList.Width:= ScaleX(400)///размер панели
WizardForm.ComponentsList.Height:= ScaleY(220)
WizardForm.ComponentsList.Color:= $272727;///цвет фона в панели страници компонентов
WizardForm.ComponentsList.Font.Color:= ClWhite;///цвет текста в панели страници компонентов
WizardForm.ComponentsList.Font.Style:= [fsBold];
WizardForm.ComponentsList.Font.Size:= 8;
WizardForm.ComponentsList.Font.Name:= 'Arial'
WizardForm.ComponentsList.Parent:= WizardForm.SelectComponentsPage;
WizardForm.SelectComponentsPage;
end;
Farser21, Ну что ты копипастишь одно и тоже? Если не ответили, то это не значит что пропустили или не заметили твоё сообщение. Просто гуру-кодеры пока в спячке.
Farser21,
Открой "Inno Setup Compiler".
Перейди во вкладку "WizardForm Desinger (Дизайнер диалогов)":
http://i5.imageban.ru/thumbs/2013.12.09/c1b30f46187026005faf14ccc1c7c3a5.png (http://i5.imageban.ru/out/2013/12/09/c1b30f46187026005faf14ccc1c7c3a5.png)
и меняй как тебе вздумается.
Только начинай с чистого скрипта, чтоб не запоганить ранее созданный.
С левого бока, выбираешь желаемый диалог который хочешь отредактировать.
Кликаешь на объект. Затем можешь расширить этот объект ухватив за край и/или передвинуть объект.
Если нужно передвинуть например сразу три кнопки. То зажимаешь SHIFT, выбираешь эти три кнопки затем отпускаешь SHIFT и перемещаешь.
Так же вверху есть панель, с помощью которой можешь добавить кнопку, прогрессбар и пр.
Например некоторые объекты не меняются. Как скажем "InnerNotebook" и "OuterNotebook", их нужно выбирать вручную (с правого бока):
http://i1.imageban.ru/thumbs/2013.12.09/339b65b80463e62d482b729db0c9e185.png (http://i1.imageban.ru/out/2013/12/09/339b65b80463e62d482b729db0c9e185.png) http://i1.imageban.ru/thumbs/2013.12.09/18ab50d46e1bacee054e0312d9dce86d.png (http://i1.imageban.ru/out/2013/12/09/18ab50d46e1bacee054e0312d9dce86d.png)
как выбрал один из них. Переходишь к диалогу, ухватываешь за край и расширяешь.
очень маленькое окно, подскажите как его сделать больше? »Скорее всего тебя интересует "InnerNotebook".
Только будь готов к тому что, придётся увеличивать размер окна и изменять все формы.
Farser21
09-12-2013, 18:41
Mat_y, Nordek спасибо. Только куда вставлять этот код?
ComponentsList := TLabel.Create(WizardForm);
with ComponentsList do begin
WizardForm.ComponentsList.Left:= ScaleX(30)///положение панели
WizardForm.ComponentsList.Top:= ScaleY(100);
WizardForm.ComponentsList.Width:= ScaleX(400)///размер панели
WizardForm.ComponentsList.Height:= ScaleY(220)
WizardForm.ComponentsList.Color:= $272727;///цвет фона в панели страници компонентов
WizardForm.ComponentsList.Font.Color:= ClWhite;///цвет текста в панели страници компонентов
WizardForm.ComponentsList.Font.Style:= [fsBold];
WizardForm.ComponentsList.Font.Size:= 8;
WizardForm.ComponentsList.Font.Name:= 'Arial'
WizardForm.ComponentsList.Parent:= WizardForm.SelectComponentsPage;
WizardForm.SelectComponentsPage;
end;
Только куда вставлять этот код? »
В любое место процедуры InitializeWizard
Достаточно просто:
procedure InitializeWizard();
begin
WizardForm.ComponentsList.SetBounds(ScaleX(30), ScaleY(100), ScaleX(400), ScaleY(220));
end;
Farser21, Вот пример инсталла набросал:
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.
[Tasks]
Name: a; Description: a
Name: b; Description: b
Name: c; Description: c
Name: d; Description: d
Name: e; Description: e
[Components]
Name: a; Description: a
Name: b; Description: b
Name: c; Description: c
Name: d; Description: d
Name: e; Description: e
[Code]
procedure InitializeWizard();
begin
with WizardForm do
begin
ClientHeight := ScaleY(434);
ClientWidth := ScaleX(609);
end;
with WizardForm.Bevel do
begin
Top := ScaleY(393);
Width := ScaleX(610);
end;
with WizardForm.CancelButton do
begin
Left := ScaleX(516);
Top := ScaleY(399);
end;
with WizardForm.NextButton do
begin
Left := ScaleX(431);
Top := ScaleY(399);
end;
with WizardForm.BackButton do
begin
Left := ScaleX(355);
Top := ScaleY(399);
end;
with WizardForm.OuterNotebook do
begin
Width := ScaleX(609);
Height := ScaleY(393);
end;
with WizardForm.WizardBitmapImage do
begin
Height := ScaleY(393);
end;
with WizardForm.WelcomeLabel2 do
begin
Width := ScaleX(429);
end;
with WizardForm.WelcomeLabel1 do
begin
Width := ScaleX(429);
end;
with WizardForm.Bevel1 do
begin
Width := ScaleX(610);
end;
with WizardForm.InnerNotebook do
begin
Width := ScaleX(529);
Height := ScaleY(317);
end;
with WizardForm.LicenseNotAcceptedRadio do
begin
Top := ScaleY(280);
end;
with WizardForm.LicenseAcceptedRadio do
begin
Top := ScaleY(260);
end;
with WizardForm.LicenseMemo do
begin
Width := ScaleX(529);
Height := ScaleY(220);
end;
with WizardForm.InfoBeforeMemo do
begin
Width := ScaleX(529);
Height := ScaleY(277);
end;
with WizardForm.DiskSpaceLabel do
begin
Top := ScaleY(304);
end;
with WizardForm.ComponentsDiskSpaceLabel do
begin
Top := ScaleY(304);
end;
with WizardForm.ComponentsList do
begin
Width := ScaleX(528);
Height := ScaleY(208);
end;
with WizardForm.TypesCombo do
begin
Width := ScaleX(528);
end;
with WizardForm.NoIconsCheck do
begin
Top := ScaleY(303);
end;
with WizardForm.TasksList do
begin
Width := ScaleX(528);
Height := ScaleY(260);
end;
with WizardForm.ReadyMemo do
begin
Width := ScaleX(529);
Height := ScaleY(277);
end;
with WizardForm.PreparingMemo do
begin
Width := ScaleX(481);
Height := ScaleY(193);
end;
with WizardForm.FilenameLabel do
begin
Width := ScaleX(528);
end;
with WizardForm.ProgressGauge do
begin
Width := ScaleX(528);
end;
with WizardForm.InfoAfterMemo do
begin
Width := ScaleX(528);
Height := ScaleY(277);
end;
with WizardForm.MainPanel do
begin
Width := ScaleX(609);
end;
with WizardForm.WizardSmallBitmapImage do
begin
Left := ScaleX(552);
end;
with WizardForm.WizardBitmapImage2 do
begin
Height := ScaleY(393);
end;
with WizardForm.RunList do
begin
Width := ScaleX(413);
Height := ScaleY(227);
end;
with WizardForm.FinishedLabel do
begin
Width := ScaleX(421);
end;
with WizardForm.FinishedHeadingLabel do
begin
Width := ScaleX(421);
end;
end;
Ну раз обещал, последняя моя версия: »
Спасибо большое за скрипт закачки! Пара вопросов - можно ли как то изменить МБ на MB при переключении на другую локаль? Всё остальное решаемо с помощью [CustomMessages].
И да, ещё - если кликнуть и удерживать л.к.м. на верхней части инсталлятора (так сказать, поставить на паузу) - инсталлятор зависает :(.
А, нет - ещё и сек на sec в строке прошло (Elapsed).
habib2302
10-12-2013, 09:54
доброе время суток.как добавить 2-ой путь в скрипт для удаления настроек/сохранений
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
case CurUninstallStep of
usPostUninstall:
if DirExists(AddBackslash(ExpandConstant('{userdocs}')) + 'Мои игры\The Saboteur™\Сохранения') then
begin
if MsgBoxEx(0, 'Удалить сохранения игры находящиеся по адресу:' + #13#13 + AddQuotes(AddBackslash(ExpandConstant('{userdocs}')) + 'Мои игры\The Saboteur™\Сохранения'), 'Удаление сохранений', $00000004 or $00000020, 0, 0) = IDYES then
DelTree(AddBackslash(ExpandConstant('{userdocs}')) + 'Мои игры\The Saboteur™\Сохранения', True, True, True);
end;
end;
end;
El Sanchez
10-12-2013, 13:57
Пара вопросов - можно ли как то изменить МБ на MB при переключении на другую локаль? »
nik1967, строка с размером и единицей измерения формируется функцией StrFormatByteSize64, а та берет надписи из строковых ресурсов shlwapi.dll. То же самое и с StrFromTimeInterval. Поэтому, если нужен полный контроль над отображением информации о размерах/времени, то нужно свои функции писать TicksToTime/BytesToSize.
И да, ещё - если кликнуть и удерживать л.к.м. на верхней части инсталлятора (так сказать, поставить на паузу) - инсталлятор зависает »
Ну, правильно, инсталлятор однопоточное приложение, пока обрабатываются мышиные сообщения головной поток ждет. Выносил я как-то закачку в отдельный поток, нестабильно все как-то, на XP работает, на Win7 нет, ошибки всякие вылазят. Будет время доделаю.
как добавить 2-ой путь в скрипт для удаления настроек/сохранений »
habib2302, таким же способом, как и 1-й.
habib2302
10-12-2013, 15:32
таким же способом, как и 1-й. »
это как?
habib2302,
По мойму очевидней некуда! Так же как и первый...
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
case CurUninstallStep of
usPostUninstall:
if DirExists(AddBackslash(ExpandConstant('{userdocs}')) + 'Мои игры\The Saboteur™\Сохранения') then
begin
if MsgBoxEx(0, 'Удалить сохранения игры находящиеся по адресу:' + #13#13 + AddQuotes(AddBackslash(ExpandConstant('{userdocs}')) + 'Мои игры\The Saboteur™\Сохранения'), 'Удаление сохранений', $00000004 or $00000020, 0, 0) = IDYES then
DelTree(AddBackslash(ExpandConstant('{userdocs}')) + 'Мои игры\The Saboteur™\Сохранения', True, True, True);
if DirExists(AddBackslash(ExpandConstant('{userdocs}')) + 'Мои игры\The Saboteur™\Сохранения 2') then
begin
if MsgBoxEx(0, 'Удалить сохранения игры находящиеся по адресу:' + #13#13 + AddQuotes(AddBackslash(ExpandConstant('{userdocs}')) + 'Мои игры\The Saboteur™\Сохранения 2'), 'Удаление сохранений', $00000004 or $00000020, 0, 0) = IDYES then
DelTree(AddBackslash(ExpandConstant('{userdocs}')) + 'Мои игры\The Saboteur™\Сохранения 2', True, True, True);
end;
end;
end;
end;
Farser21
10-12-2013, 16:28
Ребята всем доброго времени суток. Кто может помочь, возникли небольшие вопросы о установщике. Объяснить не смогу. Поэтому прошу связаться со мной по скайпу и я покажу с чем у меня проблемы, заранее спасибо! скайп farsero_o
Tco 03, А дальше что?
Ведь если папка "Сохранения 2" будет присутствовать а папка "Сохранения" не будет присутствовать, то смысла в таком коде нету т.е он даже не сработает. Учитывать нужно все нюансы.
Ну, продолжай, продолжай...
А дальше что? »
Чувак... Дальше двигаем извилинами :tease:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
SolidCompression=yes
Compression=lzma/ultra
PrivilegesRequired=none
OutputDir=userdocs:Inno Setup Examples Output
[*code]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
case CurUninstallStep of
usPostUninstall:
if DirExists(AddBackslash(ExpandConstant('{userdocs}')) + 'Мои игры') or DirExists(AddBackslash(ExpandConstant('{userdocs}')) + 'Не мои игры') then
begin
if DirExists(AddBackslash(ExpandConstant('{userdocs}')) + 'Мои игры') then
if MsgBoxEx(0, 'Удалить сохранения игры находящиеся по адресу:' + #13#13 + AddQuotes(AddBackslash(ExpandConstant('{userdocs}')) + 'Мои игры'), 'Удаление сохранений', $00000004 or $00000020, 0, 0) = IDYES then
DelTree(AddBackslash(ExpandConstant('{userdocs}')) + 'Мои игры', True, True, True);
if DirExists(AddBackslash(ExpandConstant('{userdocs}')) + 'Не мои игры') then
if MsgBoxEx(0, 'Удалить сохранения игры находящиеся по адресу:' + #13#13 + AddQuotes(AddBackslash(ExpandConstant('{userdocs}')) + 'Не мои игры'), 'Удаление сохранений', $00000004 or $00000020, 0, 0) = IDYES then
DelTree(AddBackslash(ExpandConstant('{userdocs}')) + 'Не мои игры', True, True, True);
end;
end;
end;
строка с размером и единицей измерения формируется функцией StrFormatByteSize64, а та берет надписи из строковых ресурсов shlwapi.dll. То же самое и с StrFromTimeInterval. Поэтому, если нужен полный контроль над отображением информации о размерах/времени, то нужно свои функции писать TicksToTime/BytesToSize. »
С функциями то понятно, разобрался откуда что растёт, а вот самому написать функции "если нужен полный контроль над отображением информации о размерах/времени" ума не хватает. Это очень сложно и времязатратно? Был бы очень признателен (да и думаю не один я), если бы ты выбрал время и написал эти функции.
Tco 03, Другое дело. А то на словах "По мойму очевидней некуда! »" все мастера.
Дальше нужно двигать извилинами »Так подсказывай нуждающимся как правильно это делать.
Дальше нужно двигать извилинами »Возвращаю шайбу: Знание "Русского языка" тоже нужно.
habib2302
10-12-2013, 18:49
Tco 03, выдает ошибку
http://i.imgur.com/q8qiIp1.jpg (http://i.imgur.com/ZcHkjdm.jpg)
habib2302,
Во первых: usUninstall - это то, что нужно выполнить перед деинсталяцией. usPostUninstall - после.
Во вторых у тебя уже есть:
case CurUninstallStep of
usPostUninstall:
зачем тебе: CurUninstallStep = usUninstall
Код полностью рабочий, проверь просто так, без ничего. А в своём скрипте разберайся сам. И не суй всё куда попало.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC