Как я могу переместить раздел задач после установки раздела в Inno Setup? - PullRequest
1 голос
/ 07 мая 2020

Обратите внимание, что я новичок в Inno Setup. В настоящее время у меня есть следующее:

Installation language selection (1) -> Select additional tasks (2) -> Ready to install (3) -> Installing (4) -> Click finish to exit Setup. (5)

Я хочу добиться, чтобы пользователю предлагалось ввести Additional tasks (2) после Installing (4). У меня есть флажки Create a desktop shortcut и Launch application в дополнительных задачах.

Вот сценарий, который я использую для создания настройки (с заменой различных вещей на фиктивные данные, поскольку я не могу их раскрыть).

#define MyAppName "My App"
#define MyAppExeName "MyApp.exe"
#define MyAppVersion "1.0"
#define MyAppPublisher "MyCompanyName"

[Setup]
AppId={{someId}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
DefaultDirName={autopf}\{#MyAppName}
DefaultGroupName={#MyAppName}
DisableProgramGroupPage=yes
OutputBaseFilename=My App
SetupIconFile=C:\MyApp\logo.ico
Compression=lzma
SolidCompression=yes
WizardStyle=modern

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"
Name: StartAfterInstall; Description: Launch application; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl"

[Files]
Source: "C:\Users\myuser\MyApp\bin\Release\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

[Icons]
Name: "{userdesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: {app}\{#MyAppExeName}; Flags: shellexec skipifsilent nowait; Tasks: StartAfterInstall

Обновление:

Изменение моего раздела [Run] на это:

Filename: {app}\{#MyAppExeName}; Flags: shellexec skipifsilent nowait; AfterInstall: CreateIcon

и добавление раздела [Code] следующим образом:

[Code]

procedure CreateIcon;
var
  IconFileName: string;
begin
  IconFileName := ExpandConstant('{commondesktop}\DashBoard.lnk');

  CreateShellLink(
    IconFileName, '',
    ExpandConstant('{app}\{#MyAppExeName}'),
    '', ExpandConstant('{app}'),
    ExpandContant('{app}\logo.ico'), 0, SW_SHOWNORMAL);
end;

не добавлял флажок на последнем шаге настройки.

Я пробовал добавить ChangesAssociations=yes в конец моего раздела [Setup] без добавления флажка.

После этого я подумал, что могу использовать тот же метод, которым мне удалось добавить флажок для запуска приложения на последнем шаге настройки.

Итак, пытаюсь добавить второй флажок, например:

[Run]
Filename: {app}\{cm:AppName}.exe; Description: {cm:LaunchProgram,cm:AddShortcut,{cm:AppName}}; Flags: nowait postinstall skipifsilent

[CustomMessages]
AppName=MyApp
LaunchProgram=Start MyApp after finishing installation
AddShortcut=Add desktop shortcut

оставляет мне только один флажок вместо двух.

Могу я просто сказать, что перед добавлением второго флажка это было так:

[Run]
Filename: {app}\{cm:AppName}.exe; Description: {cm:LaunchProgram,{cm:AppName}}; Flags: nowait postinstall skipifsilent

[CustomMessages]
AppName=MyApp
LaunchProgram=Start MyApp after finishing installation

Если еще необходима информация - дайте мне знать.

Обновление:

Вот последняя версия s cript:

#define MyAppName "MyApp"
#define MyAppExeName "MyApp.exe"
#define MyAppVersion "1.0"
#define MyAppPublisher "MyCompany"

[Setup]
AppId={{678F2A68-E028-46F0-A18C-0A47135A98E8}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppPublisher={#MyAppPublisher}
DefaultDirName={autopf}\{#MyAppName}
DefaultGroupName={#MyAppName}
DisableProgramGroupPage=yes
OutputBaseFilename=MyApp
SetupIconFile=C:\Users\myuser\Projects\MyApp\logo.ico
Compression=lzma
SolidCompression=yes
WizardStyle=modern

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl"

[Files]
Source: "C:\Users\myuser\Projects\MyApp\bin\Debug\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

[Icons]
Name: "{userdesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"

[Run]
Filename: {app}\{cm:AppName}.exe; Description: {cm:LaunchProgram,{cm:AppName}}; Flags: postinstall skipifsilent;
Filename: {app}\{cm:AppName}.exe; Description: {cm:AddShortcut,{cm:AppName}}; Flags: postinstall skipifsilent;

[CustomMessages]
AppName=MyApp
LaunchProgram=Start MyApp after finishing installation
AddShortcut=Add shortcut to desktop

[Code]

procedure CreateIcon;
var
  IconFileName: string;
begin
  IconFileName := ExpandConstant('{commondesktop}\MyApp.lnk');

  CreateShellLink(
    IconFileName, '',
    ExpandConstant('{app}\{#MyAppExeName}'),
    '', ExpandConstant('{app}'),
    ExpandConstant('{app}\logo.ico'), 0, SW_SHOWNORMAL);
end;

Надеюсь, это поможет.

1 Ответ

1 голос
/ 07 мая 2020

При желании легко запустить приложение после завершения установки. См .:
Inno Setup - Как создать флажки на готовой странице? или
Запустить приложение после успешной установки


Создание ярлыка на рабочем столе сложнее. Самый простой способ (с точки зрения сценария Inno Setup) - передать создание ярлыка на аутсорсинг самому приложению (через параметр командной строки) или какому-либо сценарию (например, PowerShell). И затем вы можете запустить это приложение / скрипт так же, как и приложение выше.

Если вы хотите, чтобы установщик сам создал ярлык, вам придется взломать его, как показано здесь:
Запуск кода сценария (добавление раздела реестра) вместо исполняемого файла в записи «Выполнить» в Inno Setup

Код для создания ярлыка в коде находится здесь:
Значок ссылки на рабочий стол после значка Раздел запуска Inno Setup

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...