Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 8]
diman_21Ru
06-03-2015, 13:55
nik1967, Ясно
palsn2000
06-03-2015, 20:04
Здравствуйте.
Если в инсталляторе присутствует InfoAfterPage, то на FinishedPage становится видна и активна кнопка "<Back"
Я хочу её отключить и сделать невидимой (ModalResalt=mrNone, Visible=False)
при попытке изменить дизайнером диалогов (использую расширенную версию от Restools) изменяется общая кнопка "<Back" для всех страниц, и свойство Visible выделено серым - недоступно для редактирования.
Отключить хочу потому, что при автоматическом переходе на страницу InfoAfterPage у меня выдаётся звуковой сигнал о завершении установки, а при повторном переходе на страницу InfoAfterPage со страницы FinishedPage при нажатии на кнопку "<Back" возникает Runtime Error с подписью что не может извлечь файл "Complete.mp3" из временной папки ввиду его отсутствия.
(хочу отключить и спрятать именно кнопку, а не повторно проигрывать звуковой файл).
Dodakaedr
06-03-2015, 20:07
palsn2000, Попробуйте так
procedure CurPageChanged(CurPageID: Integer);
begin
case CurPageID of
wpFinished: begin
WizardForm.BackButton.Hide; //скрываем
//WizardForm.BackButton.Enabled := False; //неактивность кнопки
end;
end;
end;
kotyarko@fb
06-03-2015, 20:14
Если в инсталляторе присутствует InfoAfterPage, то на FinishedPage становится видна и активна кнопка "<Back"
Я хочу её отключить и сделать невидимой »
Procedure CurPageChanged(CurPageID: Integer);
begin
case CurPageID of
wpFinished: WizardForm.BackButton.Visible := False;
end;
end;
Снова опоздал :(
palsn2000
06-03-2015, 21:34
Dodakaedr, Спасибо за пример, только вот новая трудность: у меня в коде уже есть одна
procedure CurPageChanged(CurPageID: Integer);
и Ваш кусок кода я назвал
procedure CurPageChanged1(CurPageID: Integer); со скрытием кнопки WizardForm.BackButton.Hide;
Компилируется всё отлично, но не работает (кнопка всё равно есть) в отладчике кружочки серые - т.е. к процедуре нет обращения.
Подобные проблемы были ранее с InitializeWizard
Решал через запись следующего вида:
Procedure InitializeWizard();
begin
InitializeWizard1();
InitializeWizard2();
InitializeWizard3();
end;
Но с CurPageChanged1 у меня так не получается
Не подскажите как записать для нескольких procedure CurPageChanged(CurPageID: Integer); ?
Заранее спасибо.
Dodakaedr
06-03-2015, 22:20
palsn2000, вижу проще сделать по другому: покажите свою процедуру procedure CurPageChanged(CurPageID: Integer);
или же если уже используется wpFinished то добавьте WizardForm.BackButton.Hide;
вот так: wpFinished:
begin
WizardForm.BackButton.Hide; //скрываем
//WizardForm.BackButton.Enabled := False; //неактивность кнопки
end;
или так if CurPageID = wpFinished then WizardForm.BackButton.Hide;
смотря какой там у вас вариант используется.
palsn2000
06-03-2015, 22:29
Dodakaedr, Спасибо разобрался.
Всё сделал в одной процедуре
сначала у меня идёт
if CurPageID = wpInfoAfter then
.......
мой код
.......
затем я добавил
if CurPageID = wpFinished then
и далее Ваш код.
Всё заработало, ещё раз спасибо.
Dodakaedr
06-03-2015, 22:46
Всё заработало, ещё раз спасибо. »
не за что и для этого есть Полезное сообщение
Dodakaedr
07-03-2015, 20:00
Как заставить этот код работать?(unicode от restools). Нужно получить путь к папке "Моя музыка"[Setup]
AppName=test
AppVersion=1.0
DefaultDirName={pf}\test
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Code]
type
pchar=pansichar;
const
MAX_PATH = 260;
CSIDL_MYMUSIC = $0d;
function SHGetSpecialFolderPath(hwndOwner: HWND; lpszPath: PChar; nFolder: Integer; fCreate: BOOL): BOOL;
external 'SHGetSpecialFolderPathA@shell32.dll stdcall';
function GetSpecialPath(CSIDL: Word): string;
var
s: string;
begin
SetLength(s, MAX_PATH);
if not SHGetSpecialFolderPath(0, PChar(s), CSIDL, True) then s := '';
Result:= PChar(s);
end;
procedure InitializeWizard;
begin
MsgBox(GetSpecialPath(CSIDL_MYMUSIC), mbInformation, MB_OK);
end;
Решено:[Setup]
AppName=test
AppVersion=1.0
DefaultDirName={pf}\test
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Code]
const
CSIDL_MYMUSIC = $0d;
procedure InitializeWizard();
begin
WizardForm.WelcomeLabel2.Caption := GetShellFolderByCSIDL(CSIDL_MYMUSIC, True);
end;
Вот так? и потом все ето прописать в ChangeLang?
https://yadi.sk/i/USsBrvW9eoooc »
Да »
здраствуйте всем , я снова ображаюсь к вам по той же проблеме , спустя половину месяца я резгреб свои проблемы и решился опять взяться за скрипт , тогда когода я его забросил мне было все понятно как делать но теперь нет , немогу понять как его сделать, помогите пожайлуста
OldGamer
09-03-2015, 01:24
Всем привет.
Создаю инсталлятор (стиль Steam) со слайд-шоу.
Обычно, когда начинается показ слайдов окно установщика становится "компактным" и перемещается в нижний правый угол экрана.
После добавления скрипта "Закрепить ярлык на панели задач" (функция PinToTaskbar) - возникает следующая проблема:
во время показа слайдов окно установщика не переходит в нижний правый угол экрана (не меняет размер и положение) и, тем самым, закрывает показываемые слайды :(
Как это можно исправить?
Код:
https://yadi.sk/d/jq7ufVo1f7oVj
На некоторых системах была замечена проблема с неправильным отображением содержимого в окне установщика. Почему такое происходит?
http://s009.radikal.ru/i308/1503/4f/a73006abe219.jpg
http://s014.radikal.ru/i328/1503/78/c29d6b4a7aec.jpg
Ссылка на установщик (https://yadi.sk/d/5aBACmh5f7yB3)
Raz3r, Тестируйте, перезалил скрипт, немного подправил фон, текст и ярлыки.
http://rghost.ru/69y2FKDpR
TryRooM, попробую, спасибо
ekspoint
09-03-2015, 22:11
Подскажите код картинок (привью) для компонентов
Sotonisto
10-03-2015, 04:07
Доброго времени суток.
Вот скрипт инсталлятора (http://rghost.ru/8ZxGN5KHx) "Закос под z10yded".
Все работает отлично, но:
1. Подскажите как изменить фон "WizardForm.ComponentsList", например установить для него фоновое изображение или сделать прозрачным?
2. Обычно при использовании "DisableReadyPage=true" название кнопки "Далее" на предыдущей странице заменяется на "Установить". В данном скрипте это не происходит, т.е. страница исчезает, но название кнопки как было "Далее" таким и остается. Как это исправить? Надеюсь, вы поняли, что я имел в виду.
Dodakaedr
10-03-2015, 16:49
Sotonisto, ваш скрипт не пошел, так как сижу на unicode, вот пример решения ваших проблем(фон "WizardForm.ComponentsList" и заменяется на "Установить")
Файл large.bmp должен находится рядом с инсталлятором.
[Setup]
AppName=test
AppVersion=1.0
DefaultDirName={pf}\test
DisableReadyPage=yes
[Files]
Source: large.bmp; Flags: dontcopy deleteafterinstall
[Components]
Name: one; Description: text;
Name: two; Description: text;
Name: bob; Description: text;
Name: to; Description: text;
Name: tw; Description: text;
Name: wo; Description: text;
[code]
procedure InitializeWizard();
begin
ExtractTemporaryFile(ExpandConstant('large.bmp'));
WizardForm.ComponentsList.LoadBGBmpFromFile(ExpandConstant('{tmp}\large.bmp'), WizardForm.ComponentsList.Left, WizardForm.ComponentsList.Top);
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpSelectComponents then WizardForm.NextButton.Caption := 'Установить';
end;
Подскажите код картинок (привью) для компонентов »
Поиск....
123 (http://forum.oszone.net/post-2472600-123.html), 126 (http://forum.oszone.net/post-2472933-126.html)
Цитата ShadeUa:
Вот так? и потом все ето прописать в ChangeLang?
https://yadi.sk/i/USsBrvW9eoooc »
Цитата Dodakaedr:
Да »
здраствуйте всем , я снова ображаюсь к вам по той же проблеме , спустя половину месяца я резгреб свои проблемы и решился опять взяться за скрипт , тогда когода я его забросил мне было все понятно как делать но теперь нет , немогу понять как его сделать, помогите пожайлуста »
Помогите пожайлуста ((
Dodakaedr
10-03-2015, 22:02
когода я его забросил мне было все понятно как делать но теперь нет , немогу понять как его сделать, помогите пожайлуста »
прочтите еще раз полностью обсуждение вашего вопроса, в основном это помогает вернуть свое понимание)) ну а если все же нет то вот вам пример [setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}
ShowLanguageDialog=auto
[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl
Name: eng; MessagesFile: compiler:Default.isl
[CustomMessages]
; Русский
rusButtonBack=< &Назад
rusButtonNext=&Далее >
rusButtonCancel=Отмена
rusSetupWindowTitle=Установка — %1
rusWelcomeLabel1=Вас приветствует Мастер установки %1
rusWelcomeLabel2=Программа установит %1, версия %2 на Ваш компьютер.%n%nРекомендуется закрыть все прочие приложения перед тем, как продолжить.%n%nНажмите «Далее», чтобы продолжить, или «Отмена», чтобы выйти из программы установки.
rustest=футбол
rusfish=рыбалка
rusjoke=прикол
; English
engButtonBack=< &Back
engButtonNext=&Next >
engButtonCancel=Cancel
engSetupWindowTitle=Setup — %1
engWelcomeLabel1=Welcome to the %1 Setup Wizard
engWelcomeLabel2=This will install %1 version %2 on your computer.%n%nIt is recommended that you close all other applications before continuing.%n%nClick Next to continue, or Cancel to exit Setup.
engtest=football
engfish=fishing
engjoke=joke
[Code]
var
lang: String;
langBtn: TButton;
test, fish, joke: TNewCheckBox;
procedure ChangeLang();
begin
WizardForm.BackButton.Caption:= CustomMessage(lang+'ButtonBack');
WizardForm.NextButton.Caption:= CustomMessage(lang+'ButtonNext');
WizardForm.CancelButton.Caption:= CustomMessage(lang+'ButtonCancel');
WizardForm.Caption:= FmtMessage(CustomMessage(lang+'SetupWindowTitle'), ['{#SetupSetting('AppName')}']);
WizardForm.WelcomeLabel1.Caption:= FmtMessage(CustomMessage(lang+'WelcomeLabel1'), ['{#SetupSetting('AppName')}']);
WizardForm.WelcomeLabel2.Caption:= FmtMessage(CustomMessage(lang+'WelcomeLabel2'), ['{#SetupSetting('AppName')}', '{#SetupSetting('AppVersion')}']);
//добавляем свои элементы (чекбоксы, радиокнопки, лейблы и т.д.)
test.Caption := CustomMessage(lang+'test');
fish.Caption := CustomMessage(lang+'fish');
joke.Caption := CustomMessage(lang+'joke');
end;
procedure LangBtnClick(Sender: TObject);
begin
if lang='rus' then begin
lang:= 'eng';
langBtn.Caption:= 'рус';
end else begin
lang:= 'rus';
langBtn.Caption:= 'eng';
end;
ChangeLang();
end;
procedure RedesignWizardForm;
begin
{ test }
test := TNewCheckBox.Create(WizardForm);
with test do
begin
Parent := WizardForm.WelcomePage;
Left := ScaleX(184);
Top := ScaleY(200);
Width := ScaleX(65);
Height := ScaleY(17);
Caption := 'футбол';
end;
{ fish }
fish := TNewCheckBox.Create(WizardForm);
with fish do
begin
Parent := WizardForm.WelcomePage;
Left := ScaleX(184);
Top := ScaleY(224);
Width := ScaleX(65);
Height := ScaleY(17);
Caption := 'рыбалка';
end;
{ joke }
joke := TNewCheckBox.Create(WizardForm);
with joke do
begin
Parent := WizardForm.WelcomePage;
Left := ScaleX(184);
Top := ScaleY(248);
Width := ScaleX(65);
Height := ScaleY(17);
Caption := 'прикол';
end;
end;
procedure InitializeWizard;
begin
RedesignWizardForm;
langBtn:= TButton.Create(WizardForm);
with langBtn do begin
SetBounds(10,WizardForm.CancelButton.Top,30,WizardForm.CancelButton.Height)
OnClick:= @LangBtnClick;
Parent:= WizardForm;
end;
if ActiveLanguage='rus' then begin
lang:= 'rus';
langBtn.Caption:= 'eng';
end else begin
lang:= 'eng';
langBtn.Caption:= 'рус';
end;
end;
ekspoint
11-03-2015, 03:03
Поиск.... »
Мне еще нужно когда не наводишь на компонент то останется главная картинка
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.