Скрипты Inno Setup. Помощь и советы [часть 7]
-
Dodakaedr
Re: Скрипты Inno Setup. Помощь и советы [часть 7]
Stealthmax, Как создать ключи для: Не создавать ярлык на рабочем столе, Не создавать ярлык в меню «Пуск»?
-
audiofeel
Re: Скрипты Inno Setup. Помощь и советы [часть 7]
Цитата Dodakaedr:
Как создать ключи для: Не создавать ярлык на рабочем столе, Не создавать ярлык в меню «Пуск»?
Ну все по той же схеме, что в примерах выше. Либо кастомные ключи делаешь для каждого чекбокса или используешь секцию Tasks.
Код:
Если будешь использовать по отдельности для каждого ярлыка, то например, при наличием {group} будет игнорироваться состояние чекбокса, тут думаю понятно почему.
В этом примере самый простой способ. Используются ключи из справки: /TASKS="startmenu,urlmenu,uninstallicon,desktopicon,quicklaunchicon", либо так /COMPONENTS="component1,component2", чтобы не создавать /TASKS="!startmenu,!urlmenu,!uninstallicon,!desktopicon,!quicklaunchicon"- восклицательный знак перед именем задачи
Код:
Как создать ключи для: Не создавать ярлык на рабочем столе, Не создавать ярлык в меню «Пуск»?
Скрипты Inno Setup. Помощь и советы [часть 7]
Ну все по той же схеме, что в примерах выше. Либо кастомные ключи делаешь для каждого чекбокса или используешь секцию Tasks.
Код:
Код: Выделить всё
[Icons]
//здесь открепляем ярлыки от привязки к общей группе {group}
//{commonprograms}- общая для всех пользователей папка в меню Пуск
//{userprograms}- для отдельного пользователя в меню Пуск
Name: "{commonprograms}\{#MyAppName}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Check: StartMenu
Name: "{commonprograms}\{#MyAppName}\{cm:VisitSiteProduct,{#MyAppName}}"; Filename: "{#MyAppURL}"; Check: UrlMenu
Name: "{commonprograms}\{#MyAppName}\{cm:Uninstall} {#MyAppName}"; Filename: "{app}\{uninstallexe}"; Check: UninstallMenu
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Check: Desktop
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Check: QuickStart
[Languages]
Name: "Russian"; MessagesFile: "compiler:Languages\Russian.isl"
[CustomMessages]
Russian.VisitSiteProduct=Посетить сайт продукта
Russian.Uninstall=Удалить
[_Code]
var
startmenu1 : boolean;
function StartMenu: Boolean;
begin
Result := StartMenuRadioButton.Checked or startmenu1;
end;
Function InitializeSetup: Boolean;
var
i : integer;
Begin
for i:=2 to ParamCount do begin
if ( Pos(LowerCase('/startmenu'), Lowercase(ParamStr(i))) > 0 ) then startmenu1 := true else startmenu1 := false; //назначаем ключ для выполнения задачи
Result := True;
end;
end;Если будешь использовать по отдельности для каждого ярлыка, то например, при наличием {group} будет игнорироваться состояние чекбокса, тут думаю понятно почему.
В этом примере самый простой способ. Используются ключи из справки: /TASKS="startmenu,urlmenu,uninstallicon,desktopicon,quicklaunchicon", либо так /COMPONENTS="component1,component2", чтобы не создавать /TASKS="!startmenu,!urlmenu,!uninstallicon,!desktopicon,!quicklaunchicon"- восклицательный знак перед именем задачи
Код:
Код: Выделить всё
[Icons]
Name: "{commonprograms}\{#MyAppName}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: startmenu
Name: "{commonprograms}\{#MyAppName}\{cm:VisitSiteProduct,{#MyAppName}}"; Filename: "{#MyAppURL}"; Tasks: urlmenu
Name: "{commonprograms}\{#MyAppName}\{cm:Uninstall} {#MyAppName}"; Filename: "{app}\{#uninstallexe}"; Tasks: uninstallicon
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}";
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}";
Name: "startmenu"; Description: "{#MyAppName}"; GroupDescription: "{cm:AdditionalIcons}";
Name: "urlmenu"; Description:"{cm:VisitSiteProduct,{#MyAppName}}"; GroupDescription: "{cm:AdditionalIcons}";
Name: "uninstallicon"; Description: "{cm:Uninstall,{#MyAppName}}"; GroupDescription: "{cm:AdditionalIcons}";
[Languages]
Name: "Russian"; MessagesFile: "compiler:Languages\Russian.isl"
[CustomMessages]
Russian.VisitSiteProduct=Посетить сайт продукта
Russian.Uninstall=Удалить
Russian.CreateDesktopIcon=Создать ярлык на рабочем столе
Russian.CreateQuickLaunchIcon=Добавить ярлык в панель Быстрого запуска-
Dodakaedr
Re: Скрипты Inno Setup. Помощь и советы [часть 7]
Stealthmax, Если предоставляешь код, то предоставляй рабочий вариант - чтоб за тебя никто не допиливал. Директив, CustomMessages и прочего тоже касается.
Например в Inno нет такого: {cm:Uninstall}; есть {cm:UninstallProgram,My Program}.
Например в Inno нет такого: {cm:Uninstall}; есть {cm:UninstallProgram,My Program}.
-
Dodakaedr
Re: Скрипты Inno Setup. Помощь и советы [часть 7]
Цитата Nordek:
Если предоставляешь код, то предоставляй рабочий вариант - чтоб за тебя никто не допиливал. Директив, CustomMessages и прочего тоже касается.
Например в Inno нет такого: {cm:Uninstall}; есть {cm:UninstallProgram,My Program}.
Здрасти, приехали. А может сразу тогда выкладывать скрипт по заявке? Тут вроде не стол заказов, а сообщество, где обмениваются опытом. А что касаемо Russian.isl, входящего в состав Inno, то это изврат на мой взгляд, мне не нравится, правлю под себя. И самое главное: если непонятно, то личка открыта, всегда пожалуйста или же прям здесь, меня не затруднит пояснить, а в данном конкретном случае попытался помочь человеку насколько это зависело от моего времени и возможностей. Я тоже с паскалем не родился в одном месте, делюсь знаниями, сам черпаю здесь многое для себя. Здесь есть умнее меня намного, но я их стараюсь не задалбывать вопросами из области элементарного, скорее где наверняка не понимаю. Так что претензия необоснованна в мой адрес.
P.S. Извиняй, если резко выразился. Человек не понял, не получилось, сразу мне отписал, решаем в личке.
Если предоставляешь код, то предоставляй рабочий вариант - чтоб за тебя никто не допиливал. Директив, CustomMessages и прочего тоже касается.
Например в Inno нет такого: {cm:Uninstall}; есть {cm:UninstallProgram,My Program}.
Скрипты Inno Setup. Помощь и советы [часть 7]
Здрасти, приехали. А может сразу тогда выкладывать скрипт по заявке? Тут вроде не стол заказов, а сообщество, где обмениваются опытом. А что касаемо Russian.isl, входящего в состав Inno, то это изврат на мой взгляд, мне не нравится, правлю под себя. И самое главное: если непонятно, то личка открыта, всегда пожалуйста или же прям здесь, меня не затруднит пояснить, а в данном конкретном случае попытался помочь человеку насколько это зависело от моего времени и возможностей. Я тоже с паскалем не родился в одном месте, делюсь знаниями, сам черпаю здесь многое для себя. Здесь есть умнее меня намного, но я их стараюсь не задалбывать вопросами из области элементарного, скорее где наверняка не понимаю. Так что претензия необоснованна в мой адрес.
P.S. Извиняй, если резко выразился. Человек не понял, не получилось, сразу мне отписал, решаем в личке.
-
Nordek
Re: Скрипты Inno Setup. Помощь и советы [часть 7]
Stealthmax
[spoiler]Цитата Stealthmax:[/spoiler]
Тут вроде не стол заказов
Но и не помойка. Данный раздел имеет тематический характер. Любой совет должен иметь содержательную информацию. Если такового не имеется - то и смысла писать нет вообще.
Цитата Stealthmax:
А что касаемо Russian.isl, входящего в состав Inno, то это изврат на мой взгляд
Что именно здесь:
Код:
находите под словом "изврат"?
Это самый простой и стандартный пример: который компилится даже в том случае, если и вовсе не имеется секции [Languages] - быть точнее:
Код:
Цитата Stealthmax:
мне не нравится, правлю под себя.
Правьте, ваше право. Но не нужно думать что все расчёсываются вашей расчёской.
Цитата Stealthmax:
а в данном конкретном случае попытался помочь человеку
Но нужно и наглядно показать наверно? Не понимаю как так выкладывать код не проверив. Кинуть огрызком кода который не может быть воспроизведён у другого человека - это не помощь, а создание геморроя.
Цитата Stealthmax:
решаем в личке.
А что в личке? Ведь выложил же в том месте, где видно - значит им может полюбопытствовать любой желающий. Если вас сильно тяготит дать полный ответ, то конечно целесообразнее было вам помочь человеку в PM, чем потом здесь оправдываться.
Представим что этот код может заинтересовать новичка (кодеру то понятно - это как семечки лузгать) - но при попытке воспроизвести этот код выдаст ошибку "[ISPP] Undeclared identifier: "MyAppName""
при исправлении, а точнее при добавлении директивы #define со значениями.
Выскочит ещё одна ошибка, например "A custom message named "VisitSiteProduct" has not been defined. (и т.п.)"
потом "Required function or procedure 'StartMenu' not found."
наконец "Unknown identifier 'StartMenuRadioButton'" (и т.п.).
и это вместо того, чтоб один раз - дать полный ответ.
Сами же напарываетесь, а потом: "Не работает" или "Дали кривой код" и т.п.
Заметь, не все понимают что половина ответов содержится в справке.
Каждый по своему понимает. Каждый по своему делает. Но результат выходит один. Не важно каким именно способом проделан результат - важно что он работает правильно и без ошибок.
Не сделали никакого вывода - "тогда Ой".
[spoiler]Цитата Stealthmax:[/spoiler]
Тут вроде не стол заказов
Скрипты Inno Setup. Помощь и советы [часть 7]
Но и не помойка. Данный раздел имеет тематический характер. Любой совет должен иметь содержательную информацию. Если такового не имеется - то и смысла писать нет вообще.
Цитата Stealthmax:
А что касаемо Russian.isl, входящего в состав Inno, то это изврат на мой взгляд
Скрипты Inno Setup. Помощь и советы [часть 7]
Что именно здесь:
Код:
Код: Выделить всё
[Setup]
AppName=My Program
AppVersion=1.5
AppPublisher=My Company, Inc.
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
[Icons]
Name: {group}\My Program; Filename: {app}\MyProg.exe
Name: {group}\{cm:ProgramOnTheWeb,My Program}; Filename: http://www.example.com
Name: {group}\{cm:UninstallProgram,My Program}; Filename: {uninstallexe}
Name: {commondesktop}\My Program; Filename: {app}\MyProg.exe
Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\My Program; Filename: {app}\MyProg.exeнаходите под словом "изврат"?
Это самый простой и стандартный пример: который компилится даже в том случае, если и вовсе не имеется секции [Languages] - быть точнее:
Код:
Код: Выделить всё
[Languages]
Name: default; MessagesFile: compiler:Default.isl
Name: russian; MessagesFile: compiler:Languages\Russian.islЦитата Stealthmax:
мне не нравится, правлю под себя.
Скрипты Inno Setup. Помощь и советы [часть 7]
Правьте, ваше право. Но не нужно думать что все расчёсываются вашей расчёской.
Цитата Stealthmax:
а в данном конкретном случае попытался помочь человеку
Скрипты Inno Setup. Помощь и советы [часть 7]
Но нужно и наглядно показать наверно? Не понимаю как так выкладывать код не проверив. Кинуть огрызком кода который не может быть воспроизведён у другого человека - это не помощь, а создание геморроя.
Цитата Stealthmax:
решаем в личке.
Скрипты Inno Setup. Помощь и советы [часть 7]
А что в личке? Ведь выложил же в том месте, где видно - значит им может полюбопытствовать любой желающий. Если вас сильно тяготит дать полный ответ, то конечно целесообразнее было вам помочь человеку в PM, чем потом здесь оправдываться.
Представим что этот код может заинтересовать новичка (кодеру то понятно - это как семечки лузгать) - но при попытке воспроизвести этот код выдаст ошибку "[ISPP] Undeclared identifier: "MyAppName""
при исправлении, а точнее при добавлении директивы #define со значениями.
Выскочит ещё одна ошибка, например "A custom message named "VisitSiteProduct" has not been defined. (и т.п.)"
потом "Required function or procedure 'StartMenu' not found."
наконец "Unknown identifier 'StartMenuRadioButton'" (и т.п.).
и это вместо того, чтоб один раз - дать полный ответ.
Сами же напарываетесь, а потом: "Не работает" или "Дали кривой код" и т.п.
Заметь, не все понимают что половина ответов содержится в справке.
Каждый по своему понимает. Каждый по своему делает. Но результат выходит один. Не важно каким именно способом проделан результат - важно что он работает правильно и без ошибок.
Не сделали никакого вывода - "тогда Ой".
-
Dodakaedr
Re: Скрипты Inno Setup. Помощь и советы [часть 7]
Заметил такую особенность в ISDone: на странице распаковки файлов кнопка закрытия окна не работает хотя и кликабельна. Возможно ли наложить на неё функцию кнопки "отмена распаковки" или сделать неактивной как на странице завершения установки ?
-
saurn
Re: Скрипты Inno Setup. Помощь и советы [часть 7]
Цитата Nordek:
Сами же напарываетесь, а потом: "Не работает" или "Дали кривой код" и т.п.
Не вопрос, сейчас доделаю третий вариант с ключами и исправлю свой пост с исчерпывающими(рабочими) примерами на суд знатоков и начинающих, и надеюсь, что будет внесено в шапку.
Цитата Nordek:
Заметь, не все понимают что половина ответов содержится в справке.
Ну это тоже верно, все ж хотят быстро и сразу, а так не бывает.
Сами же напарываетесь, а потом: "Не работает" или "Дали кривой код" и т.п.
Скрипты Inno Setup. Помощь и советы [часть 7]
Не вопрос, сейчас доделаю третий вариант с ключами и исправлю свой пост с исчерпывающими(рабочими) примерами на суд знатоков и начинающих, и надеюсь, что будет внесено в шапку.
Цитата Nordek:
Заметь, не все понимают что половина ответов содержится в справке.
Скрипты Inno Setup. Помощь и советы [часть 7]
Ну это тоже верно, все ж хотят быстро и сразу, а так не бывает.
-
diman_21Ru
Re: Скрипты Inno Setup. Помощь и советы [часть 7]
Цитата ROMKA-1977:
Возможно ли наложить на неё функцию кнопки "отмена распаковки"
ты попробуй запустить скрипт ISDone_Example2.iss, все работает!!!
Возможно ли наложить на неё функцию кнопки "отмена распаковки"
Скрипты Inno Setup. Помощь и советы [часть 7]
http://krinkels.org/attachments/isdo...-2012-7z.1429/
ты попробуй запустить скрипт ISDone_Example2.iss, все работает!!!
-
Gnom_aka_Lexander
Re: Скрипты Inno Setup. Помощь и советы [часть 7]
diman_21Ru, во первых скрин отличается от предоставленого скрипта, в скрипте этой грубейшей ошибки нет. у тебя блок создания SizeLabel почему-то вне какой-либо функции, и плюс еще завершен лишним end.