【问题标题】:How to show several licenses in the installer如何在安装程序中显示多个许可证
【发布时间】:2011-08-04 09:33:43
【问题描述】:

我使用 Inno Setup 为我的程序创建安装程序。在我的程序中,我使用第三方库,因此我必须显示每个库的许可证信息。 我还希望安装程序将某些许可证文件显示为所选语言。 如果我有 1 个许可证表格,我知道如何在许可证文件之间切换。

我在谷歌上找了一整天,但没有找到任何东西

如何显示多个许可证?

【问题讨论】:

    标签: installation inno-setup


    【解决方案1】:

    您可以通过从[Setup] 中删除LicenseFile 指令并将其放入[Languages] 中来使每个许可证文件与语言文件匹配,如下所示:

    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...
    

    希望有帮助

    【讨论】:

      【解决方案2】:

      您可以使用 CreateOutputMsgMemoPage 创建一个带有备忘录框的页面。然后,您可以调整大小并添加同意/不同意框。

      ; 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.
      

      【讨论】:

      • 我将此代码插入到我的代码中。我在哪里调用“CreateOutputMsgMemoPage”?
      • 在我给你的代码中调用了它。不过,您确实需要从真正的InitializeWizard 拨打LGPL_InitializeWizard
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      相关资源
      最近更新 更多