Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to show several licenses in the installer

I use the Inno Setup to create installer for my program. In my program I use third-party libraries, so I have to show license information for each of them. also I want the installer to show certain license files to chosen language. I know how to switch between license files if I have 1 license form.

I've looked in google for whole day but didn't find anything

how can I show several licenses?

like image 950
Vasilii Ruzov Avatar asked Aug 04 '11 09:08

Vasilii Ruzov


2 Answers

You can make each license file match the language file by removing the LicenseFile directive from [Setup] and putting it in the [Languages] like this:

Name: "english"; MessagesFile: "compiler:Default.isl"; LicenseFile: "English License.rtf"
Name: "chinesesimp"; MessagesFile: "compiler:Languages\ChineseSimp.isl"; LicenseFile: "Chinese SIM License.rtf"
Name: "chinesetrad"; MessagesFile: "compiler:Languages\ChineseTrad.isl"; LicenseFile: "Chinese TRA License.rtf"
etc...

Hope that helps

like image 143
LC Technology Avatar answered Nov 17 '22 18:11

LC Technology


You can use the CreateOutputMsgMemoPage to create a page with the memo box on. You can then adjust the sizing and add the agree/disagree boxes.

; Shows a new license page for the LGPL with the usual accept/don't acccept options
[Code]
var
  LGPLPage: TOutputMsgMemoWizardPage;
  LGPLAccept: TNewRadioButton;
  LGPLRefuse: TNewRadioButton;

procedure LGPLPageActivate(Sender: TWizardPage); forward;
procedure LGPLAcceptClick(Sender: TObject); forward;

procedure LGPL_InitializeWizard();
var 
  LGPLText: AnsiString;

begin
  // Create the page
  LGPLPage := CreateOutputMsgMemoPage(wpLicense, SetupMessage(msgWizardLicense), SetupMessage(msgLicenseLabel), CustomMessage('LGPLHeader'), '');

  // Adjust the memo and add the confirm/refuse options
  LGPLPage.RichEditViewer.Height := ScaleY(148);
  LGPLAccept := TNewRadioButton.Create(LGPLPage);
  LGPLAccept.Left := LGPLPage.RichEditViewer.Left;
  LGPLAccept.Top := LGPLPage.Surface.ClientHeight - ScaleY(41);
  LGPLAccept.Width := LGPLPage.RichEditViewer.Width;
  LGPLAccept.Parent := LGPLPage.Surface;
  LGPLAccept.Caption := SetupMessage(msgLicenseAccepted);
  LGPLRefuse := TNewRadioButton.Create(LGPLPage);
  LGPLRefuse.Left := LGPLPage.RichEditViewer.Left;
  LGPLRefuse.Top := LGPLPage.Surface.ClientHeight - ScaleY(21);
  LGPLRefuse.Width := LGPLPage.RichEditViewer.Width;
  LGPLRefuse.Parent := LGPLPage.Surface;
  LGPLRefuse.Caption := SetupMessage(msgLicenseNotAccepted);

  // Set the states and event handlers
  LGPLPage.OnActivate := @LGPLPageActivate;
  LGPLAccept.OnClick := @LGPLAcceptClick;
  LGPLRefuse.OnClick := @LGPLAcceptClick;
  LGPLRefuse.Checked := true;

  // Load the LGPL text into the new page
  ExtractTemporaryFile('lgpl-3.0.txt');
  LoadStringFromFile(ExpandConstant('{tmp}/lgpl-3.0.txt'), LGPLText);
  LGPLPage.RichEditViewer.RTFText := LGPLText;
end;

procedure LGPLPageActivate(Sender: TWizardPage);
begin
  WizardForm.NextButton.Enabled := LGPLAccept.Checked;
end;

procedure LGPLAcceptClick(Sender: TObject);
begin
  WizardForm.NextButton.Enabled := LGPLAccept.Checked;
end;

[Files]
Source: {#Common}Setups\lgpl-3.0.txt; DestDir: {app}; Flags: ignoreversion

[CustomMessages]
LGPLHeader=Please read the following License Agreement. Some components are licensed under the GNU Lesser General Public License.
like image 20
Deanna Avatar answered Nov 17 '22 19:11

Deanna