Скрипты Inno Setup. Помощь и советы [часть 7]

Ответить
 • Просмотры: 55
Аватара пользователя
Dodakaedr

Re: Скрипты Inno Setup. Помощь и советы [часть 7]

Сообщение Dodakaedr »

Stealthmax, Как создать ключи для: Не создавать ярлык на рабочем столе, Не создавать ярлык в меню «Пуск»?
Аватара пользователя
audiofeel

Re: Скрипты Inno Setup. Помощь и советы [часть 7]

Сообщение audiofeel »

Цитата Dodakaedr:



Как создать ключи для: Не создавать ярлык на рабочем столе, Не создавать ярлык в меню «Пуск»?
Скрипты 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]

Сообщение Dodakaedr »

Stealthmax, Если предоставляешь код, то предоставляй рабочий вариант - чтоб за тебя никто не допиливал. Директив, CustomMessages и прочего тоже касается.

Например в Inno нет такого: {cm:Uninstall}; есть {cm:UninstallProgram,My Program}.
Аватара пользователя
Dodakaedr

Re: Скрипты Inno Setup. Помощь и советы [часть 7]

Сообщение Dodakaedr »

Цитата Nordek:



Если предоставляешь код, то предоставляй рабочий вариант - чтоб за тебя никто не допиливал. Директив, CustomMessages и прочего тоже касается.

Например в Inno нет такого: {cm:Uninstall}; есть {cm:UninstallProgram,My Program}.
Скрипты Inno Setup. Помощь и советы [часть 7]




Здрасти, приехали. А может сразу тогда выкладывать скрипт по заявке? Тут вроде не стол заказов, а сообщество, где обмениваются опытом. А что касаемо Russian.isl, входящего в состав Inno, то это изврат на мой взгляд, мне не нравится, правлю под себя. И самое главное: если непонятно, то личка открыта, всегда пожалуйста или же прям здесь, меня не затруднит пояснить, а в данном конкретном случае попытался помочь человеку насколько это зависело от моего времени и возможностей. Я тоже с паскалем не родился в одном месте, делюсь знаниями, сам черпаю здесь многое для себя. Здесь есть умнее меня намного, но я их стараюсь не задалбывать вопросами из области элементарного, скорее где наверняка не понимаю. Так что претензия необоснованна в мой адрес.



P.S. Извиняй, если резко выразился. Человек не понял, не получилось, сразу мне отписал, решаем в личке.
Аватара пользователя
Nordek

Re: Скрипты Inno Setup. Помощь и советы [часть 7]

Сообщение Nordek »

Stealthmax

[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]

Сообщение Dodakaedr »

Заметил такую особенность в ISDone: на странице распаковки файлов кнопка закрытия окна не работает хотя и кликабельна. Возможно ли наложить на неё функцию кнопки "отмена распаковки" или сделать неактивной как на странице завершения установки ?
Аватара пользователя
saurn

Re: Скрипты Inno Setup. Помощь и советы [часть 7]

Сообщение saurn »

Цитата Nordek:



Сами же напарываетесь, а потом: "Не работает" или "Дали кривой код" и т.п.
Скрипты Inno Setup. Помощь и советы [часть 7]




Не вопрос, сейчас доделаю третий вариант с ключами и исправлю свой пост с исчерпывающими(рабочими) примерами на суд знатоков и начинающих, и надеюсь, что будет внесено в шапку.
Цитата Nordek:



Заметь, не все понимают что половина ответов содержится в справке.
Скрипты Inno Setup. Помощь и советы [часть 7]




Ну это тоже верно, все ж хотят быстро и сразу, а так не бывает.
Аватара пользователя
diman_21Ru

Re: Скрипты Inno Setup. Помощь и советы [часть 7]

Сообщение diman_21Ru »

Цитата ROMKA-1977:



Возможно ли наложить на неё функцию кнопки "отмена распаковки"
Скрипты Inno Setup. Помощь и советы [часть 7]




http://krinkels.org/attachments/isdo...-2012-7z.1429/


ты попробуй запустить скрипт ISDone_Example2.iss, все работает!!!
Аватара пользователя
Gnom_aka_Lexander

Re: Скрипты Inno Setup. Помощь и советы [часть 7]

Сообщение Gnom_aka_Lexander »

diman_21Ru, во первых скрин отличается от предоставленого скрипта, в скрипте этой грубейшей ошибки нет. у тебя блок создания SizeLabel почему-то вне какой-либо функции, и плюс еще завершен лишним end.
Ответить

Вернуться в «Автоматическая установка приложений»