文档章节

inno安装

b
 backtrackx
发布于 06/22 18:50
字数 914
阅读 11
收藏 0
点赞 0
评论 0

#define MyAppName "HoldChipEngin"
#define MyAppVersion "1.0"
#define MyAppPublisher "Hold Chip, Inc."
#define MyAppURL "http://www.holdchip.com/"
#define MyAppExeName "HoldChipEngin.exe"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{21B45DFF-B864-480F-81E3-2430C6DCAC0D}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DisableProgramGroupPage=yes
OutputDir=D:\inno\holdchipengin
OutputBaseFilename=HoldChipEngin
SetupIconFile=D:\HoldChip\logo.ico
Compression=lzma
SolidCompression=yes

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "arabic"; MessagesFile: "compiler:Languages\Arabic.isl"
Name: "bosnian"; MessagesFile: "compiler:Languages\Bosnian.isl"
Name: "brazilianportuguese"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl"
Name: "bulgarian"; MessagesFile: "compiler:Languages\Bulgarian.isl"
Name: "catalan"; MessagesFile: "compiler:Languages\Catalan.isl"
Name: "chinesesimplified"; MessagesFile: "compiler:Languages\ChineseSimplified.isl"
Name: "chinesetraditional"; MessagesFile: "compiler:Languages\ChineseTraditional.isl"
Name: "corsican"; MessagesFile: "compiler:Languages\Corsican.isl"
Name: "croatian"; MessagesFile: "compiler:Languages\Croatian.isl"
Name: "czech"; MessagesFile: "compiler:Languages\Czech.isl"
Name: "danish"; MessagesFile: "compiler:Languages\Danish.isl"
Name: "dutch"; MessagesFile: "compiler:Languages\Dutch.isl"
Name: "finnish"; MessagesFile: "compiler:Languages\Finnish.isl"
Name: "french"; MessagesFile: "compiler:Languages\French.isl"
Name: "german"; MessagesFile: "compiler:Languages\German.isl"
Name: "greek"; MessagesFile: "compiler:Languages\Greek.isl"
Name: "hebrew"; MessagesFile: "compiler:Languages\Hebrew.isl"
Name: "hungarian"; MessagesFile: "compiler:Languages\Hungarian.isl"
Name: "italian"; MessagesFile: "compiler:Languages\Italian.isl"
Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl"
Name: "korean"; MessagesFile: "compiler:Languages\Korean.isl"
Name: "latvian"; MessagesFile: "compiler:Languages\Latvian.isl"
Name: "lithuanian"; MessagesFile: "compiler:Languages\Lithuanian.isl"
Name: "malaysian"; MessagesFile: "compiler:Languages\Malaysian.isl"
Name: "norwegian"; MessagesFile: "compiler:Languages\Norwegian.isl"
Name: "polish"; MessagesFile: "compiler:Languages\Polish.isl"
Name: "portuguese"; MessagesFile: "compiler:Languages\Portuguese.isl"
Name: "romanian"; MessagesFile: "compiler:Languages\Romanian.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
Name: "scottishgaelic"; MessagesFile: "compiler:Languages\ScottishGaelic.isl"
Name: "serbiancyrillic"; MessagesFile: "compiler:Languages\SerbianCyrillic.isl"
Name: "serbianlatin"; MessagesFile: "compiler:Languages\SerbianLatin.isl"
Name: "slovak"; MessagesFile: "compiler:Languages\Slovak.isl"
Name: "slovenian"; MessagesFile: "compiler:Languages\Slovenian.isl"
Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"
Name: "swedish"; MessagesFile: "compiler:Languages\Swedish.isl"
Name: "thai"; MessagesFile: "compiler:Languages\Thai.isl"
Name: "turkish"; MessagesFile: "compiler:Languages\Turkish.isl"
Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl"
Name: "vietnamese"; MessagesFile: "compiler:Languages\Vietnamese.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: checkablealone
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: checkablealone; OnlyBelowVersion: 0,6.1

[Files]
Source: "D:\HoldChip\HoldChipEngin.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\HoldChip\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
   
[Code]

function InitializeSetup():boolean;
var
  MykeynotExist:boolean;
  ResultCode: Integer;
  uicmd: String;
begin
  MykeynotExist:= true;
  if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{B7F653CF-1BE5-4F40-BA4A-E3BBC6869116}', 'UninstallString', uicmd) then
  begin
  MyKeynotExist:= false;
  MsgBox('安装程序检测到您的系统中已经安装了官方的 {#AppName} '#10#10'你最好先卸载此 {#AppName} 再安装本 {#AppName}',mbInformation,MB_OK)
  Exec(ExpandConstant('{pf}\InstallShield Installation Information\{{B7F653CF-1BE5-4F40-BA4A-E3BBC6869116}\Setup.exe'), '', '', SW_Show, ewNoWait, ResultCode);
  end;
  Result:= MykeynotExist
  if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{49D79F54-D485-4011-83FE-FFC938F3DB86}_is1', 'UninstallString', uicmd) then
  begin
  MyKeynotExist:= false;
  Exec(RemoveQuotes(uicmd), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
  end;
  Result:= MykeynotExist
end;  

   
   
    
[Code]
function InitializeUninstall(): Boolean;
var MainRun: HWND;
var MVRun:HWND;
begin
// FindWindowByWindowName函数参数为窗口名,即窗口标题,而非进程名。
MainRun := FindWindowByWindowName('HoldChipEngin');
MVRun := FindWindowByWindowName('HoldChipEngin');
if (MainRun<>0) or (MVRun<>0) then
  begin
    if Msgbox('安装程序检测到客户端正在运行。' #13#13 '单击“是”关闭进程,继续卸载,或按“否”退出!', mbConfirmation, MB_YESNO) = idNO then
      begin
       Result :=false;                                      // 安装程序退出
      end else
      begin // 如果两个以上的判断条件,在执行时需要分别再进行判断
        if MainRun<>0 then
          begin
            PostMessage(MainRun, 18, 0, 0);                 // 退出主进程
          end;
        if MVRun<>0 then
          begin
            PostMessage(MVRun, 18, 0, 0);                   // 退出Connector进程
          end;
        DelTree(ExpandConstant('{app}'), True, True, True); // 退出进程后删除安装位置所有文件夹
        Result :=true;                                      // 安装程序继续
      end;
  end else
      begin
       Result :=true;                                       // 若未检测到进程,则继续安装程序 
      end;
end;


[Code]

var
ResultStr: String;
Names: TArrayOfString;
B: Boolean;
I: Integer;
S: String;
ErrorCode: Integer;
const AppName ='HoldChipEngin';
function InitializeSetup(): Boolean;
begin
  Result := True;
  if RegGetSubkeyNames(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall', Names) then
  begin
    for I := 0 to GetArrayLength(Names)-1 do
      begin
        S := Names[i];
        SetLength(Names[I], 28);
        if AppName=Names[I] then
        begin
          //注册表中找到了此键
          B := RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'+S, 'UninstallString', ResultStr)
          ResultStr := RemoveQuotes(ResultStr);
          if B then
          begin
            MsgBox('您曾安装过本软件,即将卸载!', mbInformation, MB_OK);
            Exec(ResultStr, '/VERYSILENT', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ErrorCode);
            Result := False;
          end
        break;
        end
      end;
  end;
end;

  
[Code]
procedure InitializeWizard();
var ResultStr:String;
    ResultCode:Integer;
begin
  if RegQueryStringValue(HKLM,'SOFTWARE\Microsoft\Windows\CurrentVersion\Unistall\HoldChipEngin',
     'UninstallString',ResultStr) then
     begin
     ResultStr :=RemoveQuotes(ResultStr);
     Exec(ResultStr,'','',SW_SHOWNORMAL, ewWaitUntilTerminated,ResultCode);
     end;
   end;
   

© 著作权归作者所有

共有 人打赏支持
b
粉丝 0
博文 29
码字总数 10902
作品 0
深圳
Inno Extract 1.3 发布,安装程序制作工具

Inno Extract 1.3 发布,该版本支持使用 Inno Setup 5.5.0 创建的安装程序,对于不支持的安装数据版本则提示警告;同时该版本基于 C++11 模式进行编译。 Inno Setup 是一个为 Windows 应用程...

oschina
2012/07/04
668
1
Inno Extract 1.2 发布,安装程序制作工具

Inno Extract 1.2 发布,该版本修复了在一些老的 Linux 发行版上的错误。 Inno Setup 是一个为 Windows 应用程序创建安装程序的工具。主要是用于在非 Windows 下使用 Wine 作为运行环境的程序...

红薯
2012/04/01
487
0
Inno Extract 1.1 发布,安装程序制作工具

Inno Extract 1.1 发布,该版本支持从指定语言中抽取文件的功能,修复了安装头解析代码的 bug。 Inno Setup 是一个为 Windows 应用程序创建安装程序的工具。主要是用于在非 Windows 下使用 ...

红薯
2012/03/19
375
0
Inno Setup :Hello World

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

006玩命
06/25
0
0
Electron开发跨平台构建流程设计

摘要:这是 Electron 系列文章的第二篇,本文将和大家分享我是怎么去构建自动化的 Electron 开发构建工程的,说白了,就是怎么把敲的代码变成一个用户可以下载安装的包。当然随着之后应用复杂...

前端之巅
2017/12/15
0
0
Inno Setup 2 :语法解析(一)

背景概述   Inno Setup安装程序用编译脚本的方式创建,脚本其实就是一个类似 .INI 文件格式的 ASCII 码文本文件(它不像你想象的那么复杂),其支持Pascal语言。 Unicode Inno Setup支持 UT...

006玩命
06/26
0
0
用 Electron 打造 Win/Mac 应用,从「代码」到可下载的「安装包」,可能比你想得麻烦一点

首发于酷家乐前端博客 我们能从很多地方学习到怎么起一个 Electron 项目,有些还会介绍怎么打包或构建你的代码,但距离「真正地发行一款 Electron 产品」这一目标,还有很多工作需要做... 这...

Stinson_Zhao
2017/11/08
0
9
在线打包工具--Cloud Setuper

Cloud Setuper 是一款在线打包工具,类似 NSIS 或 inno setup, 简洁清爽的界面,你只需要注册一个简单的账号,上传一个7z格式的源程序包和几张介绍你程序的图片,即可一键生成一个简洁漂亮的...

ding465398889
2014/11/06
1K
2
安装制作软件--Inno Setup

Inno Setup是一个免费的安装制作软件(开源),它既有适合新手的脚本向导,又有良好的脚本编辑环境,能够快速制作出标准Windows2000风格 的安装界面,足以完成一般的安装任务,在新版本版中软...

匿名
2009/06/08
14.2K
0
用Inno Setup制作向360安装向导一样,实现一键安装

我想用Inno Setup 实现带自己的背景图片,提示框也是要带背景图片的,实现像360卫士,qq那样进行一键安装,不需要一直点下一步,下一步进行安装,哪位有这方面的代码例子啊,急需帮助,望大神...

kioty
2016/02/19
949
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

编程语言对比分析:Python与Java和JavaScript(图)

编程语言对比分析:Python与Java和JavaScript(图): 凭什么说“Python 太慢,Java 太笨拙,我讨厌 JavaScript”?[图] 编程语言生而为何? 我们人类从原始社会就是用语言表达自己,互相沟通...

原创小博客
12分钟前
0
0
Akka构建Reactive应用《one》

看到这Akka的官网,描述使用java或者scala构建响应式,并发和分布式应用更加简单,听着很高级的样子,下面的小字写着消息驱动,但是在quickstart里面又写容错事件驱动,就是这么钻牛角尖。 ...

woshixin
24分钟前
0
0
ffmpeg源码分析 (四)

io_open 承接上一篇,对于avformat_open_input的分析还差其中非常重要的一步,就是io_open,该函数用于打开FFmpeg的输入输出文件。 在init_input中有这么一句 if ((ret = s->io_open(s, &s-...

街角的小丑
25分钟前
0
0
String,StringBuffer ,StringBuilder的区别

不同点 一、基类不同 StringBuffer、StringBuilder 都继承自AbStractStringBuilder,String 直接继承自 Object 2、底层容器“不同” 虽然底层都是字符数组,但是String的是final修饰的不可变...

不开心的时候不要学习
41分钟前
0
0
nodejs 文件操作

写文件code // 加载文件模块var fs = require("fs");var content = 'Hello World, 你好世界!';//params 文件名,内容,编码,回调fs.writeFile('./hello.txt',content,'utf8',function (er......

yanhl
43分钟前
0
0
SpringBoot mybits 查询为0条数据 但是在Navicat 中可以查询到数据

1.页面请求: 数据库查询: 2018-07-16 17:56:25.054 DEBUG 17312 --- [nio-9010-exec-3] c.s.h.m.C.selectSelective : ==> Preparing: select id, card_number, customer_id, customer_nam......

kuchawyz
53分钟前
0
0
译:Self-Modifying cod 和cacheflush

date: 2014-11-26 09:53 翻译自: http://community.arm.com/groups/processors/blog/2010/02/17/caches-and-self-modifying-code Cache处在CPU核心与内存存储器之间,它给我们的感觉是,它具......

我叫半桶水
55分钟前
0
0
Artificial Intelligence Yourself

TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流...

孟飞阳
今天
0
0
press.one个人数字签名

这是我在press.one的数字签名 https://press.one/p/address/v?s=9d3d5b7ce019af357ab994775549e8f047a5b17fc9893364652fc67e4b95443b38ccb24c6655e0d252dd0154369eb9b7717c4ccf4e1835ca3596......

NateHuang
今天
1
0
Oracle 中的 SQL 分页查询原理和方法详解

本文分析并介绍 Oracle 中的分页查找的方法。 Oracle 中的表,除了我们建表时设计的各个字段,其实还有两个字段(此处只介绍2个),分别是 ROWID(行标示符)和 ROWNUM(行号),即使我们使用...

举个_栗子
今天
4
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部