• 一个简单的inno setup模板


    一、模板代码

        基本功能包括多路径安装、多语言、自定义图标。

    [Setup]
    ShowLanguageDialog=yes
    AppCopyright=Copyright Reserved(C) 2016, 360 Inc.
    AppName={cm:Packagename}
    AppVerName={cm:Packagename} {cm:Packagever}
    LicenseFile=
    OutputDir=C:/installer
    UninstallFilesDir={code:getdlldir}/uninstall
    ExtraDiskSpaceRequired=0
    UserInfoPage=false
    VersionInfoVersion=1.0
    VersionInfoCompany=360 Inc.
    VersionInfoDescription=360
    EnableDirDoesntExistWarning=true
    AppID={{007F4590-89DE-4F87-9608-10F07CEFBBE9}
    LanguageDetectionMethod=uilanguage
    UsePreviousSetupType=true
    DisableStartupPrompt=true
    DirExistsWarning=no
    WizardImageFile=C:/Users/zzk/Desktop/FILES/PR512.bmp
    WizardSmallImageFile=C:/Users/zzk/Desktop/FILES/PR64.bmp
    SetupIconFile=C:/Users/zzk/Desktop/FILES/PR32.ico
    ArchitecturesAllowed=x64 ia64
    OutputBaseFilename=win64_setup
    VersionInfoTextVersion=1.0
    AppPublisher=360 Inc.
    AppPublisherURL=http://www.360.com
    AppVersion=1.0
    AppContact=zhangzhongke007@163.com
    UsePreviousTasks=false
    UsePreviousAppDir=false
    AllowRootDirectory=true
    CreateAppDir=false
    
    [Messages]
    en.BeveledLabel=Created by 360 Inc.
    chs.BeveledLabel=360荣誉出品
    [Languages]
    Name: "en"; MessagesFile: "compiler:Default.isl"; InfoBeforeFile: "readme-en.txt";
    Name: "chs"; MessagesFile: "compiler:LanguagesChineseSimplified.isl"; InfoBeforeFile: "readme-cn.txt"; 
    [Components]
    Name: dllall; Description: {cm:installDllFile}; Types: full; Flags: disablenouninstallwarning
    Name: prmall; Description: {cm:installPrmFile}; Types: full; Flags: disablenouninstallwarning; Languages: 
    [_ISTool]
    OutputExeFilename=C:/install/win64_setup.exe
    [Files]
    Source: ./avcodec-56.dll; DestDir: {code:getdlldir}; Components: dllall
    Source: ./avformat-56.dll; DestDir: {code:getdlldir}; Components: dllall
    Source: ./avutil-54.dll; DestDir: {code:getdlldir}; Components: dllall
    Source: ./custom.prm; DestDir: {code:getprmdir}; Components: prmall
    [Dirs]
    Name: {code:getdlldir}; Components: dllall
    Name: {code:getprmdir}; Components: prmall
    
    [CustomMessages]
    Packagename=360 desktop
    Packagever=1.0.0
    
    en.installDllFile=install dynamic link files
    chs.installDllFile=安装动态库
    en.installPrmFile=install Premiere Pro CC plugin files
    chs.installPrmFile=安装插件文件
    
    en.choicedirCaption=Select Destination Location
    chs.choicedirCaption=选择安装路径
    en.choicedirDescription=Where should %1 be installed?
    chs.choicedirDescription=你想将%1安装到哪里呢?
    en.SelectDirLabel=Setup will install %1 into the following folder.
    chs.SelectDirLabel=安装程序将%1安装到如下位置
    en.choicedir=Choice for installation directory of %1
    chs.choicedir=选择%1的安装位置
    
    en.SelectDirBrowseLabel=To continue, click Next. If you would like to select a different folder, click Browse.
    chs.SelectDirBrowseLabel=想要继续请点击"下一步"。如果需要切换安装目录,请点击"浏览"
    en.Button1Browse=&Browse...
    chs.Button1Browse=浏览(&B)
    en.Button2Browse=B&rowse...
    chs.Button2Browse=浏览(&R)
    
    en.dlllabel=<The path to the system folders eg. C:/WINDOWS/System32>
    chs.dlllabel=<系统目录如 C:/WINDOWS/System32>
    en.prmlabel=<The plugin folder for Premiere Pro CC>
    chs.prmlabel=<Premiere Pro CC公共插件目录>
    
    en.installedDir=installation directory of %1
    chs.installedDir=%1 的安装位置
    [Code]
    
    var
      Dlldir: TLabel;
      Prmdir: TLabel;
      BitmapImage1: TBitmapImage;
      Label1: TLabel;
      Label2: TLabel;
      Edit1: TEdit;
      Edit2: TEdit;
      Button1: TButton;
      Button2: TButton;
      NewStaticText1: TNewStaticText;
      NewStaticText2: TNewStaticText;
    
    procedure ChoseDllFoldersClick(Sender: TObject);
    var
     choicedDIR:String;
    begin
     if BrowseForFolder(ExpandConstant('{cm:choicedir}'),choicedDIR,True) then
      Edit1.Text := choicedDIR;
    end;
    
    procedure ChosePrmFoldersClick(Sender: TObject);
    var
     choicedDIR:String;
    begin
     if BrowseForFolder(ExpandConstant('{cm:choicedir}'),choicedDIR,True) then
      Edit2.Text := choicedDIR;
    end;
    
    procedure choicedir_Activate(Page: TWizardPage);
    begin
    end;
    
    function choicedir_ShouldSkipPage(Page: TWizardPage): Boolean;
    begin
      Result := False;
    end;
    
    function choicedir_BackButtonClick(Page: TWizardPage): Boolean;
    begin
      Result := True;
    end;
    
    function choicedir_NextButtonClick(Page: TWizardPage): Boolean;
    begin
      Result := True;
    end;
    
    procedure choicedir_CancelButtonClick(Page: TWizardPage; var Cancel, Confirm: Boolean);
    begin
    end;
    
    function GetInstallString(): String;
    var
      sInstallPath: String;
    begin
      sInstallPath := 'C:Program FilesAdobeCommonPlug-ins7.0MediaCore';
      if RegValueExists(HKLM64, 'SOFTWAREAdobePremiere ProCurrentVersion', 'Plug-InsDir') then
      begin
        RegQueryStringValue(HKLM64, 'SOFTWAREAdobePremiere ProCurrentVersion', 'Plug-InsDir', sInstallPath)
      end
      Result := sInstallPath;
    end;
    
    function choicedir_CreatePage(PreviousPageId: Integer): Integer;
    var
      Page: TWizardPage;
    begin
      Page := CreateCustomPage(
        PreviousPageId,
        ExpandConstant('{cm:choicedirCaption}'),
        ExpandConstant('{cm:choicedirDescription,{cm:Packagename}}')
      );
    
      { Dlldir }
      Dlldir := TLabel.Create(Page);
      with Dlldir do
      begin
        Parent := Page.Surface;
        Left := ScaleX(0);
        Top := ScaleY(88);
        Width := ScaleX(24);
        Height := ScaleY(16);
    
        Caption := ExpandConstant('{cm:installedDir,DLL}') ;
        Font.Color := -16777208;
        Font.Height := ScaleY(-13);
        Font.Name := 'Tahoma';
        Font.Style := [fsBold];
      end;
    
      Prmdir := TLabel.Create(Page);
      with Prmdir do
      begin
        Parent := Page.Surface;
        Left := ScaleX(0);
        Top := ScaleY(160);
        Width := ScaleX(24);
        Height := ScaleY(16);
        Caption := ExpandConstant('{cm:installedDir,PRM}') ;
        Font.Color := -16777208;
        Font.Height := ScaleY(-13);
        Font.Name := 'Tahoma';
        Font.Style := [fsBold];
      end;
    
      { BitmapImage1 }
      BitmapImage1 := TBitmapImage.Create(Page);
      with BitmapImage1 do
      begin
        Parent := Page.Surface;
        Left := ScaleX(8);
        Top := ScaleY(8);
        Width := ScaleX(57);
        Height := ScaleY(41);
      end;
    
      { Label1 }
      Label1 := TLabel.Create(Page);
      with Label1 do
      begin
        Parent := Page.Surface;
        Left := ScaleX(16);
        Top := ScaleY(136);
        Width := ScaleX(18);
        Height := ScaleY(13);
    
        Caption := ExpandConstant('{cm:dlllabel, DLLs}');
        Color := -16777206;
        Font.Color := 32768;
        Font.Height := ScaleY(-12);
        Font.Name := 'Tahoma';
      end;
    
      { Label2 }
      Label2 := TLabel.Create(Page);
      with Label2 do
      begin
        Parent := Page.Surface;
        Left := ScaleX(16);
        Top := ScaleY(206);
        Width := ScaleX(18);
        Height := ScaleY(13);
    
        Caption := ExpandConstant('{cm:prmlabel, PRMs}');
        Font.Color := 32768;
        Font.Height := ScaleY(-12);
        Font.Name := 'Tahoma';
      end;
    
      { Edit1 }
      Edit1 := TEdit.Create(Page);
      with Edit1 do
      begin
        Parent := Page.Surface;
        Left := ScaleX(16);
        Top := ScaleY(112);
        Width := ScaleX(313);
        Height := ScaleY(21);
        TabOrder := 0;
        Text := ExpandConstant('{sys}');
      end;
    
      { Edit2 }
      Edit2 := TEdit.Create(Page);
      with Edit2 do
      begin
        Parent := Page.Surface;
        Left := ScaleX(16);
        Top := ScaleY(184);
        Width := ScaleX(313);
        Height := ScaleY(21);
        TabOrder := 1;
        Text := GetInstallString();
      end;
    
      { Button1 }
      Button1 := TButton.Create(Page);
      with Button1 do
      begin
        Parent := Page.Surface;
        Left := ScaleX(336);
        Top := ScaleY(112);
        Width := ScaleX(75);
        Height := ScaleY(23);
        Caption :=ExpandConstant('{cm:Button1Browse}');
        TabOrder := 2;
        OnClick := @ChoseDllFoldersClick;
      end;
    
      { Button2 }
      Button2 := TButton.Create(Page);
      with Button2 do
      begin
        Parent := Page.Surface;
        Left := ScaleX(336);
        Top := ScaleY(184);
        Width := ScaleX(75);
        Height := ScaleY(23);
        Caption := ExpandConstant('{cm:Button2Browse}');
        TabOrder := 3;
        OnClick := @ChosePrmFoldersClick;
      end;
    
      { NewStaticText1 }
      NewStaticText1 := TNewStaticText.Create(Page);
      with NewStaticText1 do
      begin
        Parent := Page.Surface;
        Left := ScaleX(16);
        Top := ScaleY(16);
        Width := ScaleX(22);
        Height := ScaleY(17);
        Caption := ExpandConstant('{cm:SelectDirLabel,Insta360 Plugin}');
        Font.Color := -16777208;
        Font.Height := ScaleY(-13);
        TabOrder := 4;
      end;
    
      { NewStaticText2 }
      NewStaticText2 := TNewStaticText.Create(Page);
      with NewStaticText2 do
      begin
        Parent := Page.Surface;
        Left := ScaleX(16);
        Top := ScaleY(50);
        Width := ScaleX(22);
        Height := ScaleY(17);
    //    Caption := 'µ¥»÷¡°ÏÂÒ»²½¡±¼ÌÐø¡£Èç¹ûÄãÏëÑ¡ÔñÆäËüÎļþ¼Ð£¬Çëµ¥»÷¡°ä¯ÀÀ¡±¡£';
        Caption := ExpandConstant('{cm:SelectDirBrowseLabel,{cm:Packagename}}');
        Font.Color := -16777208;
      end;
    
    
      with Page do
      begin
        OnActivate := @choicedir_Activate;
        OnShouldSkipPage := @choicedir_ShouldSkipPage;
        OnBackButtonClick := @choicedir_BackButtonClick;
        OnNextButtonClick := @choicedir_NextButtonClick;
        OnCancelButtonClick := @choicedir_CancelButtonClick;
      end;
    
      Result := Page.ID;
    end;
    
    function getdlldir(Param: String): String;
    begin
     Result := Edit1.Text;
    end;
    
    function getprmdir(Param: String): String;
    begin
     Result := Edit2.Text;
    end;
    
    procedure InitializeWizard();
    begin
      choicedir_CreatePage(wpUserInfo);
    end;

    二、注意事项   

        需要注意的是,[Languages]这一节中的文件路径,Default.isl和ChineseSimplified.isl文件都是放在inno setup的安装目录下,放在其他目录中是找不到的。Default.isl默认的是英文版本,如果需要其他语言的翻译也好办,在官网上有很多网友贡献了翻译过的文本,下载下来放到inno setup安装目录下的Languages目录下即可。

  • 相关阅读:
    Chapter 03Using SingleRow Functions to Customize Output(03)
    Chapter 03Using SingleRow Functions to Customize Output(01)
    Chapter 04Using Conversion Functions and Conditional ExpressionsNesting Functions
    Chapter 04Using Conversion Functions and Conditional ExpressionsGeneral Functions
    Chapter 11Creating Other Schema Objects Index
    传奇程序员John Carmack 访谈实录 (zz.is2120)
    保持简单纪念丹尼斯里奇(Dennis Ritchie) (zz.is2120.BG57IV3)
    王江民:传奇一生 (zz.is2120)
    2011台湾游日月潭
    2011台湾游星云大师的佛光寺
  • 原文地址:https://www.cnblogs.com/csuftzzk/p/innosetup_template.html
Copyright © 2020-2023  润新知