Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 7]
Dodakaedr
21-04-2014, 18:17
Shkutu, Спасибо! Сработало.
ROMKA-1977
21-04-2014, 21:55
ты попробуй запустить скрипт ISDone_Example2.iss, все работает!!! »
СПС!!! Работает!
Dodakaedr
22-04-2014, 09:21
Как правильно указать препроцессору такое имя #define MyAppName "Programmer's Notepad"
Ругается на апостроф на строке function ShowFinishedForm(): Boolean;
var
FinishedForm: TSetupForm;
begin
FinishedForm := CreateCustomForm;
FinishedForm.Position:=poScreenCenter;
try
FinishedForm.ClientWidth := ScaleX(310);
FinishedForm.ClientHeight := ScaleY(133);
FinishedForm.BorderStyle := bsSingle;
FinishedForm.BorderIcons := [biSystemMenu];
FinishedForm.Caption := 'Установка {#MyAppName}';
FinishedForm.CenterInsideControl(WizardForm, False);
...........
Dodakaedr, для экранирования кавычки нужно дублировать
#define MyAppName "Programmer''s Notepad"
Dodakaedr
22-04-2014, 11:21
А ключ /DIR="x:\dirname" служить только для изменения имя папки или и для указания нового места в целом?
И можно ли создать его аналог, а то в моем скрипте не работает?
служить только для изменения имя папки или и для указания нового места в целом »
Какая-то не слишком ясная формулировка, на мой вкус:)
Читаем справку: ключ /DIR="x:\dirname" перезаписывает дефолтное (то, что по умолчанию выводится на странице wpSelectDir) имя папки установки, причем этот путь должен быть полным.
Про задание своих ключей для командной строки вам уже отвечали
Dodakaedr
22-04-2014, 21:41
вам уже отвечали »
Это я помню, просто не малейшего понятия не имею как его сообразить...
По идеи как-то так должно быть, правильно? Но увы не работает.
function DefaultDirParam: Boolean;
begin
Result := Pos('/d={app}', LowerCase(GetCmdTail)) > 0;
end;
ROMKA-1977
23-04-2014, 11:49
Подскажите пож. прикрутил к скрипту с ISDone_Example2 кастомнай чекбокс "Запустить приложение" на странице завершения установки. Работает всё отлично но проблема в том что при нажатии кнопки "Отмена" на финишной странице с ошибкой установки чекбокс также отображается. Как его отключить на финишной странице с ошибкой установки?
Dodakaedr,
на самом деле похоже на правду, за исключением нескольких моментов.
Во-первых, я сомневаюсь, что константу {app} тут можно использовать; она отвечает за путь, который выбрал пользователь и, как следствие, на момент запуска инсталлятора, и уж тем более в тихом режиме, не определена.
Во-вторых, если уж используете константы, то делайте это правильно. Константы для параметров командной строки разворачиваются с помощью expand
'/DIR=expand:{pf}\My Program'
Не понимаю, почему так сложно открыть справку и посмотреть, там про это тоже написано, и даже ссылку на справку вам, опять же, давали
Ну и в-третьих, просто с точки зрения обычной логики, если в выражении Pos('/d={app}', LowerCase(GetCmdTail)) вы приводите второй параметр к нижнему регистру, то неплохо было бы делать то же самое и с первым параметром
Farser21
23-04-2014, 13:39
Ребята всем привет!
Мне нужна ваша помощь. Я собираю команду модостроителей для игры World of Tanks. На данный момент я известен в сообществом данной игры под ником Farser.
Но дело не в этом сейчас я набираю команду людей в разных сферах деятельности. Так сказать для полный работы команды.
И мне нужен человек который очень хорошо разбирается в Inno Setup и поможет написать очень хороший установщик со множеством функций. К сожалению моих умений в данной программе недостаточно много.
Вот официальная тема набора в команду! Тык! (http://www.koreanrandom.com/forum/topic/14113-%D0%BD%D0%B0%D0%B1%D0%BE%D1%80-%D0%B2%D0%BE%D0%BB%D0%BE%D0%BD%D1%82%D0%B5%D1%80%D0%BE%D0%B2-%D0%B2-%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%BE-farser-team/)
Прошу откликнутся вас на мою просьбу!
Dodakaedr
23-04-2014, 15:15
для экранирования кавычки нужно дублировать »
Как апостроф вывести? Потому что дублирование и в названии программы появляется после установки (Programmer''s Notepad).
вы приводите второй параметр к нижнему регистру, то неплохо было бы делать то же самое и с первым параметром »
Типа так? function InstallerCheckParam: Boolean;
begin
Result := Pos(LowerCase('/d=expand:{app}'), LowerCase(GetCmdTail)) > 0;
end;
Dodakaedr, Как апостроф вывести? »
Так как вы хотите, чтоб в MyAppName задефайнить с 1 апострофом, а коде их как-то вдруг сделать 2? Никак. Препроцессор заменит {#MyAppName} задефайненой строкой еще до компиляции, так что применить какое-то хитрое преобразование вроде запихивания кавычки внутрь строки не получится. Гипотетически, можно было бы переопределить MyAppName в коде, но если нет четкого видения, в какой момент какое значение будет использоваться, то лучше так не делать. Имхо, использовать для вашего кэпшна локальную переменную или custom messages гораздо проще, чем изобретать велосипед. Впрочем, может может у кого-то из форумчан есть другое мнение на этот счет и они им с вами поделятся.
Типа так? »
Опять же, похоже на правду. Но как я уже говорила, я не уверена, что константа {app} в данном случае будет инициализированна и как следствие, может использоваться. Но никто не мешает вам проверить:)
Dodakaedr
23-04-2014, 19:04
Так как вы хотите, чтоб в MyAppName задефайнить с 1 апострофом, а коде их как-то вдруг сделать 2? »
Мне нужно чтобы один был, а он как-то через раз - то один то два. Как такое возможно?
Dodakaedr, вы как-то невнимательно читаете, по-моему.
Препроцессор перед компиляцией заменяет все ваши {#MyAppName} на ту строку, которую вы присвоили этой переменной в #define MyAppName. Если эта замена происходит где-либо, кроме секции , то апострофов будет 2. Если эта замена происходит в секции [Code], то апостроф будет 1 (1й апостроф просто заэкранирует 2й). Использовать 1 апостроф в MyAppName, если вы хотите использовать эту переменную в коде, нельзя, потому что для компилятора это будет выглядеть так [CODE]FinishedForm.Caption := {начало переменной}'Установка Programmer'{конец переменной}{начало нового оператора}s Notepad'; Поэтому проще сделать например FinishedForm.Caption := 'Установка Programmer''s Notepad';
Потому что дублирование и в названии программы появляется после установки (Programmer''s Notepad). »
Dodakaedr, Что вы к #define привязались, способов больше нет?
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.
[CustomMessages]
text=Programmer's Notepad
var
Text: TNewStaticText;
procedure InitializeWizard();
begin
Text := TNewStaticText.Create(WizardForm);
with Text do
begin
AutoSize := True;
Parent := WizardForm;
Caption := CustomMessage('text');
Left := ScaleX(24);
Top := ScaleY(328);
end;
end;
[CODE][Setup]
AppName={cm:text}
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.
UsePreviousLanguage=no
[Languages]
Name: default; MessagesFile: compiler:Default.isl
[CustomMessages]
text=Programmer's Notepad
[Code]
var
Text: TNewStaticText;
procedure InitializeWizard();
begin
Text := TNewStaticText.Create(WizardForm);
with Text do
begin
AutoSize := True;
Parent := WizardForm;
Caption := CustomMessage('text');
Left := ScaleX(24);
Top := ScaleY(328);
end;
end;
Даже так:
[Setup]
AppName={cm:text}
AppVersion=1.5
DefaultDirName={pf}\{cm:text}
DefaultGroupName={cm:text}
OutputDir=.
UsePreviousLanguage=no
[Languages]
Name: default; MessagesFile: compiler:Default.isl
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[CustomMessages]
default.text=Programmer's Notepad
russian.text=Блокнот программиста
[Code]
var
Text: TNewStaticText;
procedure InitializeWizard();
begin
Text := TNewStaticText.Create(WizardForm);
with Text do
begin
AutoSize := True;
Parent := WizardForm;
Caption := CustomMessage('text');
Left := ScaleX(24);
Top := ScaleY(328);
end;
end;
Dodakaedr
23-04-2014, 21:48
Что вы к #define привязались, способов больше нет? »
Есть, но так удобней.
Dodakaedr
24-04-2014, 08:45
Объясните пожалуйста, что-то не доходит.
IconFilename
Имя файла иконки (расположенной в системе пользователя). Это может быть изображение с расширением .exe или .dll, содержащее иконки, или файл .ico. Если этот параметр не указан или пустой, Windows будет использовать иконку, выбранную по умолчанию.
У меня так: [Setup]
SetupIconFile=InstallFiles\icon.ico //иконка инсталятора
UninstallDisplayIcon={uninstallexe} //иконка в "удалить или изменить программу"
[Icons]
Name: "{commonprograms}\{#MyAppName}\Удалить {#MyAppName}"; Filename: {uninstallexe}; BeforeInstall: ChangeLabel('icon'); Check: PuskCheck and PuskCheckParam; MinVersion: 0.0,5.0;
Вопрос: Почему иконка {uninstallexe} берется с инсталлятора? Я хочу сделать чтобы у инсталлятора была указанная иконка, а в деинсталляторе стандартная...
Я хочу сделать чтобы у инсталлятора была одна иконка, а в деинсталляторе стандартная »
Dodakaedr, Как вариант разные иконки: http://rghost.ru/54554271
Dodakaedr
24-04-2014, 08:57
Shift85, мне надо чтобы иконка деинсталлятора была стандартною...
diman_21Ru
24-04-2014, 09:19
Подскажите пожалуйста пример скрипта с оснащением другого курсора при запуске установщика , заранее спасибо .
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC