一个简单的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:Languages\ChineseSimplified.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 Files\Adobe\Common\Plug-ins\7.0\MediaCore'; if RegValueExists(HKLM64, 'SOFTWARE\Adobe\Premiere Pro\CurrentVersion', 'Plug-InsDir') then begin RegQueryStringValue(HKLM64, 'SOFTWARE\Adobe\Premiere Pro\CurrentVersion', '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目录下即可。
作者:24K纯开源
Email: zhangzhongke007@163.com
出处:http://www.cnblogs.com/csuftzzk/
本文版权归24K纯开源和博客园共同拥有,欢迎转载,但未经作者同意必须保留此声明,且在文章明显位置给出原文链接,否则保留追究法律责任的权利。