Inno Setup 教程

时间:2022-09-19 08:54:03

参考博客:制作部署安装包:Inno Setup

参考资料:Inno Setup详细教程

参考资料:Innosetup使用详细全面教程

个人使用的 风铃夜思雨 的汉化版,版本:5.5.5

; 脚本由 Inno Setup 脚本向导 生成!
; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档!

#define MyAppName "xxxxxxxx"
#define MyAppName1 "xxxxxx"
#define MyAppName2 "xxxxxx"
#define MyAppVersion "1.00"
#define MyAppPublisher "xxx"
#define MyAppURL "http://www.xxx.com/"
#define MyAppExeName1 "xxxx.exe"
#define MyAppExeName2 "xxxx.exe"

;这个段包含用于安装程序和卸载程序的全局设置
[Setup]
; 注: AppId的值为单独标识该应用程序。
; 不要为其他安装程序使用相同的AppId值。
; (生成新的GUID,点击 工具|在IDE中生成GUID。)
AppId={{CF002CA5-9C74-491C-AF38-903CD91BF624}
;安装界面左上角程序名
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}

;默认安装目录、默认安装目录名
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
;选择是否创建图标
AllowNoIcons=
;是否进行选择安装模式
AlwaysShowComponentsList=
;设置开始菜单文件夹名
AlwaysShowGroupOnReadyPage=
AppCopyright=Copyright  xxx
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}

;可重新修复软件
;AppModifyPath="
;资源管理器更改环境变量
;ChangesEnvironment=
;提示输入用户信息
;UserInfoPage=
;默认序列号
;DefaultUserInfoSerial=serial
;密码
;Password=pwd
;许可文档
;LicenseFile=license.txt
;选择目标目录页签显示阅读文档
;InfoBeforeFile=infobefore.txt
;安装完成后显示阅读文档
;InfoAfterFile=infoafter.txt
;显示启动渐变背景
;WindowVisible=
;安装程序使用“3D”选择框
FlatComponentsList=
;安装程序指定新图标
SetupIconFile=F:\xxx\xxx.ico
;卸载图标
;UninstallDisplayIcon={app}\uninstall.ico

OutputDir=F:\xxx
OutputBaseFilename=xxx
Compression=lzma
SolidCompression=yes

;可选。用来定义安装程序向导在选择组件面时可供选择的所有安装类型
[Types]
Name:"communication";Description:xxxx
Name:"client";Description:xxxx

;可选。定义安装程序向导的选择组件页中显示的所有组件,以便于用户定制安装类型
[Components]
Name:"communication";Description:{#MyAppName1};Types:communication
Name:"client";Description:{#MyAppName2};Types:client

[Languages]
Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"
Name:"en";MessagesFile:"compiler:English.isl"

;可选。定义安装程序在执行安装期间所有由用户定制的任务。
[Tasks]
Name: "desktopicon"; Description: ",6.1

;定义安装程序安装文件到用户系统中的可选文段
[Files]
Source: "F:\xxx\xxx\xxx.exe"; DestDir: "{app}"; Flags: ignoreversion;Components:communication
Source: "F:\xxx\xxx\xxx.exe.config"; DestDir: "{app}"; Flags: ignoreversion ;Components:communication
Source: "F:\xxx\xxx\xxx.exe"; DestDir: "{app}"; Flags: ignoreversion;Components:client
Source: "F:\xxx\xxx\xxx.exe.config"; DestDir: "{app}"; Flags: ignoreversion ;Components:client

; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion”

;定义所有创建在开始菜单和/或其他位置的快捷方式

; Add the ISSkin DLL used for skinning Inno Setup installations.
Source: compiler:ISSkin.dll; DestDir: {app}; Flags: dontcopy
; Add the Visual Style resource contains resources used for skinning,
; you can also use Microsoft Visual Styles (*.msstyles) resources.
Source: compiler:IsSkins\Codejock.cjstyles; DestDir: {tmp}; Flags: dontcopy

[Code]

// Importing LoadSkin API from ISSkin.DLL
procedure LoadSkin(lpszPath: AnsiString; lpszIniFileName: AnsiString);
external 'LoadSkin@files:isskin.dll stdcall';

// Importing UnloadSkin API from ISSkin.DLL
procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall';

// Importing ShowWindow Windows API from User32.DLL
function ShowWindow(hWnd: Integer; uType: Integer): Integer;
external 'ShowWindow@user32.dll stdcall';

function InitializeSetup(): Boolean;
var Path:string ;
    ResultCode: Integer;
    dotNetV4RegPath:string;
    dotNetV4PackFile:string;
begin
    ExtractTemporaryFile('Codejock.cjstyles');
    LoadSkin(AnsiString(ExpandConstant('{tmp}\Codejock.cjstyles')), '');
    //Result := True;

  dotNetV4RegPath:='SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full';
  dotNetV4PackFile:='{src}\dotNetFx40_Full_x86_x64.exe';

  if RegKeyExists(HKLM, dotNetV4RegPath) then
  begin
    Result := true;
  end
  else
  begin
      Path := ExpandConstant(dotNetV4PackFile);
      if(FileOrDirExists(Path)) then
      begin
        Exec(Path, '/qb', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
        if RegKeyExists(HKLM, dotNetV4RegPath) then
        begin
           Result := true;
        end
        else
        begin
           MsgBox('未能成功安装.Net Framework4.0运行环境,系统将无法运行,本安装程序即将退出!',mbInformation,MB_OK);
        end
      end
      else
      begin
          MsgBox('没有安装.Net Framework4.0运行环境,系统将无法运行,本安装程序即将退出!',mbInformation,MB_OK);
      end
  end;
end;

procedure DeinitializeSetup();
begin
    // Hide Window before unloading skin so user does not get
    // a glimse of an unskinned window before it is closed.
    ShowWindow(StrToInt(ExpandConstant();
    UnloadSkin();
end;

[Icons]
;{group}开始菜单文件夹路径,由用户在安装程序的选择开始菜单文件夹向导页中选定
Name: "{group}\{#MyAppName1}"; Filename: "{app}\{#MyAppExeName1}";Components:communication
;{group}开始菜单文件夹路径,由用户在安装程序的选择开始菜单文件夹向导页中选定
Name: "{group}\{#MyAppName2}"; Filename: "{app}\{#MyAppExeName2}";Components:client
;{commondesktop}&{userdesktop}桌面文件夹路径
Name: "{commondesktop}\{#MyAppName1}"; Filename: "{app}\{#MyAppExeName1}"; Tasks: desktopicon;Components:communication
;{commondesktop}&{userdesktop}桌面文件夹路径
Name: "{commondesktop}\{#MyAppName2}"; Filename: "{app}\{#MyAppExeName2}"; Tasks: desktopicon;Components:client
;{uninstallexe}由安装程序提取的卸载程序的完整路径名
Name:"{group}\卸载{#MyAppName1}" ;Filename:"{uninstallexe}";IconFilename:"{app}\uninstall.ico";Components:communication
;{uninstallexe}由安装程序提取的卸载程序的完整路径名
Name:"{group}\卸载{#MyAppName2}" ;Filename:"{uninstallexe}";IconFilename:"{app}\uninstall.ico";Components:client

;可选。用来定义一些想用安装在用户系统中创建、修改或删除的注册表键/值。
;按默认,用安装程序创建的注册表键和值在卸载时不删除。如果想让卸载程序删除键或值,必须包含
;uninsdelete* 标记中的一个
[Registry]
Root:HKLM;Subkey:"Software\xxx";Flags:uninsdeletekeyifempty
Root:HKLM;Subkey:"Software\xxx\communication";Flags:uninsdeletekey;Components:communication
Root:HKLM;Subkey:"Software\xxx\communication";ValueType:string;ValueName:"InstallPath";ValueData:"{app}";Components:communication
Root:HKLM;Subkey:"Software\xxx\client";Flags:uninsdeletekey;Components:client
Root:HKLM;Subkey:"Software\xxx\client";ValueType:string;ValueName:"InstallPath";ValueData:"{app}";Components:client

[UninstallDelete]
Type:filesandordirs;Name:"{app}\Log"
Type:filesandordirs;Name:"{app}\ErrorTrace.xml"
Type:filesandordirs;Name:"{app}\*.*"

;可选。指定程序完成安装后,在安装程序显示最终对话框之前要执行的程序数
[Run]
Filename: "{app}\{#MyAppExeName1}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName1, '&', '&&')}}"; Flags: nowait postinstall skipifsilent;Components:communication

Filename: "{app}\{#MyAppExeName2}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName2, '&', '&&')}}"; Flags: nowait postinstall skipifsilent;Components:client

Inno Setup 教程的更多相关文章

  1. [!!!!!]Inno Setup教程-常见问题解答

    [转]Inno Setup教程-常见问题解答 功能 * 翻译 Inno Setup 文字  * 它支持 MBCS (多字节字符集) 吗?  * 将来会支持 Windows Installer 吗?   ...

  2. inno setup教程解释脚本

    inno setup教程解释脚本 2007-04-08 21:31:36|  分类: 科技-> Inno Setu |  标签:inno   |举报 |字号 订阅     下载LOFTER客户端 ...

  3. Inno Setup教程

    一.简介 Inno Setup是一款免费的安装制作软件,小巧.简便.精美是其最大特点,支持pascal脚本,能快速制作出标准Windows2000风格的安装界面,足以完成一般安装任务.该软件用Delp ...

  4. inno setup详细使用教程

    前段时间我完成了几个软件的汉化,想把它们打包起来,可是苦于我是一个很菜的鸟,很笨的瓜,只好上网找关于安装程序制作的文章.不幸我没能找到:-( 没法只好自己去华军软件园里找找制作安装程序的软件,并一把下 ...

  5. Inno setup 简单打包教程

    转自:http://blog.csdn.net/ruifangcui7758/article/details/6662646 前段时间关注了VC6.0自带的Installshield打包的使用方法,感 ...

  6. 开源Inno Setup官网下载、安装、打包教程(官网安装向导中文语言包)

    安装Inno Setup篇 1.搜索Inno Setup 2.下载Inno Setup 3.选择下载最新 innosetup-5.5.9-unicode.exe 版本(innosetup-5.5.9. ...

  7. Inno Setup Compiler 中文使用教程

    一.概要 该文章主要解决,Inno Setup Compiler工具的使用问题. 如有什么建议欢迎提出,本人及时修改.[如有任何疑惑可以加Q群:580749909] 二.步骤 (1)下载地址:http ...

  8. Inno打包教程_百度经验

    Inno打包教程 Inno工具,是比较常用的打包软件.简简单单,一招叫你学会使用inno打包. 工具/原料 inno setup 软件 方法/步骤 双击桌面的:Inno setup compiler图 ...

  9. 使用Inno Setup Compiler制作安装软件包

    前言 项目开发完成之后,需要程序打包发行,本文使用Inno Setup工具制作安装软件包. 系统环境 系统:win7_x64 工具:Inno Setup Complier 实现步骤 1.下载安装Inn ...

随机推荐

  1. 使用PowerDesigner生成Access数据库

    PowerDesigner生成Access数据库 自从使用PD以来一直知道可以支持access但一直没有搞明白如何通过脚本来创建access数据表.在PD的tools里终于找到的答案,具体 文件都在C ...

  2. CURL 宏定义列表

    摘自http://blog.csdn.net/msda/article/details/38047809/ CURL 宏定义列表 列表CURL库一共有17个函数 curl_close:关闭CURL会话 ...

  3. 【转载】matlab如何判断一个点是否在多面体内

    转载自:http://www.52souji.net/point-within-a-polyhedron/ 我遇到的一个实际问题是:要在空位区域随机放置一定数量的原子,这些原子在空位区域任何一处存在的 ...

  4. E - Triangle

    Description Johnny has a younger sister Anne, who is very clever and smart. As she came home from th ...

  5. code force 403B.B. The Meeting Place Cannot Be Changed

    B. The Meeting Place Cannot Be Changed time limit per test 5 seconds memory limit per test 256 megab ...

  6. 从面试连跪到收割offer,回顾我的春招面试历程(研发岗位)

    本文首发于自微信公众号[程序员江湖] 作者How 2 Play Life,985 软件硕士,阿里 Java 研发工程师,在技术校园招聘.自学编程.计算机考研等方面有丰富经验和独到见解,目前致力于分享程 ...

  7. SpringMVC+MyBatis+Druid使用MySQL8.0.11版本

    1.使用MySQL8.0.11版本,要使用5.1.45或其他高版本驱动jar包,我本地使用的是最新的8.0.11 2.更换了MySQL驱动后,报Cannot find class [com.aliba ...

  8. c# 正则表达式 首字母转大写

    class Program { static void Main(string[] args) { // Input strings. const string s1 = "samuel a ...

  9. redis的sort排序

    Redis排序命令是sort,完整的命令格式如下:SORT key [BY pattern] [LIMIT start count] [GET pattern] [ASC|DESC] [ALPHA] ...

  10. Android Studio使用GIt提交代码到本地仓库后没有Push,如何回退保存

    当在AS中使用Git来提交代码时,有时候我们不注意的情况下会把不想提交的文件或文件夹(比如\build下的)提交到本地仓库,如果此时并没有Push到远程仓库的话.如果让本地仓库的提交回退并且保存之前的 ...