一个简单的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=[email protected]
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目录下即可。

时间: 2024-09-29 22:07:47

一个简单的inno setup模板的相关文章

一个简单的 JavaScript 的模板引擎

比较简单,直接贴代码吧: (function (global) { var _version = '1.0.0', _setting = { openTag: '<#', /*逻辑代码的开始标签*/ closeTag: '#>', /*逻辑代码的结束标签*/ maskOpenTag: '<!-', /*注释的开始标签*/ maskCloseTag: '-!>' /*注释的结束标签*/ }, _templateCache = {}, _escapeHTML = function (s

分享一个自用的 Inno Setup 软件打包脚本

此脚本支持打包mysql.安装mysql服务.安装windows服务.操作ini文件.操作注册表.高效压缩文件等功能,基本能满足常用的软件打包需求. ;定义各种常量 #define MyAppName "软件名称" #define MyAppDirName "软件目录名称" ;下面的版本号,公司名称,网址在 控制面板->卸载应用程序 的地方可看到 #define MyAppVersion "版本号" #define MyAppPublish

C++一个简单的手柄类模板

#ifndef HANDLE_H #define HANDLE_H #include "Animal.h" template <typename T> class Handle{ public: Handle(T *ptr); Handle(const Handle &other); Handle &operator = (const Handle &other); ~Handle(); T *operator->(); private: T

C++的一个简单的句柄类模板

#ifndef HANDLE_H #define HANDLE_H #include "Animal.h" template <typename T> class Handle{ public: Handle(T *ptr); Handle(const Handle &other); Handle &operator = (const Handle &other); ~Handle(); T *operator->(); private: T

inno setup介绍及官方网站地址

使 用 笔 记 1.Inno Setup 是什么?Inno Setup 是一个免费的 Windows 安装程序制作软件.第一次发表是在 1997 年,Inno Setup 今天在功能设置和稳定性上的竞争力可能已经超过一些商业的安装程序制作软件.关键功能:★ 支持现在所有正在使用的 32 位 Windows 版本: Windows 95,98,2000,Server 2003,XP,Me,NT 4.0 (不需要服务包). ★ 支持创建单个 EXE 格式的安装程序,使你的程序可以很方便地在网络上发表

Inno setup 简单打包教程

转自:http://blog.csdn.net/ruifangcui7758/article/details/6662646 前段时间关注了VC6.0自带的Installshield打包的使用方法,感觉繁琐,现在找到一个比较简单实用的打包小工具Inno setup,使用方法如下. (1)将编写好的程序生成Release版本,打开Inno setup 5小软件,弹出如下界面: 点击菜单栏“文件”——“新建”,出现如下界面 点击下一步,出现如下界面 这里要填写程序的名字,如“My App”,用用版本

使用Inno Setup 打包jdk、mysql、tomcat、webapp等为一个exe安装包

之前一直都没涉及到打包安装方面的东西,都是另一个同事负责的,使用的工具(installshield)也比较高大上一点,可是后来他离职以后接受的同事也只能是在这个基础上做个简单的配置,然后打包,可是现在做的项目和原来的完全不一样以后就不能使用之前的了,只能是自己硬着头皮来弄个比较简单快捷的了. 切入正题,如标题所述使用inno setup来打包一个java web 相关的内容为一个exe,.net web类似,这个工具可以在网上直接找到下载,有汉化版的,并且里面也有帮助手册可以参考.把里面的一些敏

(转)Inno Setup入门(一)——最简单的安装脚本

本文转载自:http://blog.csdn.net/Augusdi/article/details/8564788 一个最简单的安装脚本: 1.最简单的安装文件脚本: [setup] AppName=Test AppVerName=TEST DefaultDirName="E:\TEST" AppVersion=1.0 [files] Source: "F:\desktop\ipmsg.exe"; DestDir: "{app}" 编译完成后在

使用Inno Setup 打包jdk、mysql、tomcat、webapp等为一个exe安装包(转)

之前一直都没涉及到打包安装方面的东西,都是另一个同事负责的,使用的工具(installshield)也比较高大上一点,可是后来他离职以后接受的同事也只能是在这个基础上做个简单的配置,然后打包,可是现在做的项目和原来的完全不一样以后就不能使用之前的了,只能是自己硬着头皮来弄个比较简单快捷的了. 切入正题,如标题所述使用inno setup来打包一个java web 相关的内容为一个exe,.net web类似,这个工具可以在网上直接找到下载,有汉化版的,并且里面也有帮助手册可以参考.把里面的一些敏