Inno Setup - несколько версий программного обеспечения в одной установке - PullRequest
0 голосов
/ 07 июля 2019

Мне нужно выполнить настройку с несколькими версиями программного обеспечения, и я хочу, чтобы у нее была опция для переноса / установки.

На снимке экрана выше показана страница компонентов, которую я изменил, чтобы она выглядела так, как она есть.делает.Он должен отображаться после информационной страницы, а затем страница выбора каталога должна отображаться после выбора параметров.Я ДУМАЮ, что у меня есть разделы [Files] и [Tasks] и [Components], которые разбираются в основном с разделом кода, с которым я борюсь.

Например, если пользователь выбирает установку Pro версии с помощью радиоПри нажатии кнопки «Далее» должна отображаться страница выбора каталога, а затем, после продолжения, она должна быть установлена ​​или извлечена (в зависимости от переносимости или выбора установки).Установщик должен установить / извлечь указанную версию на основе указанных файлов, помеченных как pro (в разделах [Files] и [Components]).

Я перепробовал множество вариантов кода, но мой текущий вариант приведен ниже, и он не работает (игнорируйте числа SelectedValueIndex, в которые мне еще нужно ввести правильное значение, но я хотел убедиться, что он будет компилироваться первым),У меня есть код для бесшумных переключателей, который я тоже должен связать с переключателями, но я думаю, что эта часть будет работать.Его буквально просто пытаются заставить выборки (переключатели и флажки) работать.Также, если вы выбираете установку для одной из версий, идентифицируйте, например, групповое поле для переносимых параметров, которые будут выделены серым (не выбирается), и наоборот.В настоящее время я не могу заставить переключатели иметь какие-либо значения, они просто ничего не делают.

Более простое объяснение: допустим, есть 2 версии приложения, бесплатное и профессиональное.Снимок экрана - это страница компонентов, которую я изменил, чтобы она выглядела так, как вам было предложено до установки, затем вы в основном выбираете, хотите ли вы установить или извлечь переносную версию, если выбрана установка, она устанавливается в программные файлы, если выбрана переносная.выдержки в каталог установщика.Файлы, которые устанавливаются, зависят от того, выбирает ли пользователь бесплатный или профессиональный.(Установите в разделах [Файлы] и [Компоненты] соответственно).

   procedure InitializeWizard();
var  SystemMenu: HMENU;
begin
 {Create Mode Selection Page}
    UsagePage := CreateInputOptionPage(wpInfoBefore,
   'Mode', 'Select Installation Mode',
    'Mode',
   True, False);
    UsagePage.Add('FreeInstall');
    UsagePage.Add('BusinessInstall');
    UsagePage.Add('TechnicianInstall');
    UsagePage.Add('ProfessionalInstall');
    UsagePage.Add('FreePortable');
    UsagePage.Add('BusinessPortable');
    UsagePage.Add('TechnicianPortable');
    UsagePage.Add('ProfessionalPortable');
    //
    {Set Default Checkbox - Normal Install}
    if (FreeInstall)
    then
        UsagePage.SelectedValueIndex := 1
    else
        UsagePage.SelectedValueIndex := 0;

    if (BusinessInstall)
  then
        // Set the Respective Checkbox on The Wizard.
        UsagePage.SelectedValueIndex := 1
    else
        UsagePage.SelectedValueIndex := 0;

    if (TechnicianInstall)
    then
        // Set the Respective Checkbox on The Wizard.
        UsagePage.SelectedValueIndex := 1
    else
        UsagePage.SelectedValueIndex := 0;

   if (ProfessionalInstall)
    then
        // Set the Respective Checkbox on The Wizard.
        UsagePage.SelectedValueIndex := 1
    else
        UsagePage.SelectedValueIndex := 0;

    {Set Default Checkbox - Portable}
    if (FreePortable)
    then
        UsagePage.SelectedValueIndex := 1
    else
        UsagePage.SelectedValueIndex := 0;

    if (BusinessPortable)
    then
        // Set the Respective Checkbox on The Wizard.
        UsagePage.SelectedValueIndex := 1
    else
        UsagePage.SelectedValueIndex := 0;

    if (TechnicianPortable)
    then
        // Set the Respective Checkbox on The Wizard.
        UsagePage.SelectedValueIndex := 1
    else
        UsagePage.SelectedValueIndex := 0;

   if (ProfessionalPortable)
    then
        // Set the Respective Checkbox on The Wizard.
        UsagePage.SelectedValueIndex := 1
    else
        UsagePage.SelectedValueIndex := 0;
    WizardForm.Caption := '{#MyAppName} v{#MyAppVersion}';
      TotalSpace;
    WizardForm.DiskSpaceLabel.Hide;

It wont compile like this

1 Ответ

0 голосов
/ 08 июля 2019

Используйте Check параметр для привязки [Files] записей раздела к выбранной пользовательской странице:

[Files]
Source: "MyProgFree.exe"; DestDir: "{app}"; Check: IsModeSelected(0)
Source: "MyProgPro.exe"; DestDir: "{app}"; Check: IsModeSelected(1)

[Code]

var
  UsagePage: TInputOptionWizardPage;

function IsModeSelected(Mode: Integer): Boolean;
begin
  Result := (UsagePage.SelectedValueIndex = Mode);
end;

procedure InitializeWizard();
begin
  UsagePage :=
    CreateInputOptionPage(
      wpInfoBefore, 'Mode', 'Select Installation Mode', 'Mode', True, False);
  UsagePage.Add('FreeInstall');
  UsagePage.Add('ProInstall');
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...