• 一个简单的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目录下即可。

  • 相关阅读:
    删除无效的SQL SERVER组中的注册的几种方法
    SQLServer中把某个表里的记录复制到另一个数据库的表中
    文件上传 带进度条(多种风格)
    Team Leader你会带团队吗?你懂合作吗?你好像都不会啊!(上)
    整理.Net代码生成器(转)
    SQL SERVER 2000数据库,转换为ACCESS数据库(已解决ACCESS自动编号问题)
    js中prototype用法
    js在火狐和IE浏览器的差异
    Varnish介绍
    C# 4.0 新特性
  • 原文地址:https://www.cnblogs.com/csuftzzk/p/innosetup_template.html
Copyright © 2020-2023  润新知