PDA

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


Страниц : 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

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;

ShadeUa
08-03-2015, 23:52
Вот так? и потом все ето прописать в ChangeLang?
https://yadi.sk/i/USsBrvW9eoooc »
Да »
здраствуйте всем , я снова ображаюсь к вам по той же проблеме , спустя половину месяца я резгреб свои проблемы и решился опять взяться за скрипт , тогда когода я его забросил мне было все понятно как делать но теперь нет , немогу понять как его сделать, помогите пожайлуста

OldGamer
09-03-2015, 01:24
Всем привет.

Создаю инсталлятор (стиль Steam) со слайд-шоу.

Обычно, когда начинается показ слайдов окно установщика становится "компактным" и перемещается в нижний правый угол экрана.

После добавления скрипта "Закрепить ярлык на панели задач" (функция PinToTaskbar) - возникает следующая проблема:

во время показа слайдов окно установщика не переходит в нижний правый угол экрана (не меняет размер и положение) и, тем самым, закрывает показываемые слайды :(

Как это можно исправить?

Код:

https://yadi.sk/d/jq7ufVo1f7oVj

Raz3r
09-03-2015, 09:08
На некоторых системах была замечена проблема с неправильным отображением содержимого в окне установщика. Почему такое происходит?
http://s009.radikal.ru/i308/1503/4f/a73006abe219.jpg
http://s014.radikal.ru/i328/1503/78/c29d6b4a7aec.jpg
Ссылка на установщик (https://yadi.sk/d/5aBACmh5f7yB3)

TryRooM
09-03-2015, 11:37
Raz3r, Тестируйте, перезалил скрипт, немного подправил фон, текст и ярлыки.
http://rghost.ru/69y2FKDpR

Raz3r
09-03-2015, 11:39
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
10-03-2015, 21:24
Цитата 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