当前位置: 首页 > news >正文

inno安装

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

#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;
   

转载于:https://my.oschina.net/xuxinxin/blog/1834287

相关文章:

  • Vue命令行工具vue-cli
  • A-Treepath//dfs
  • OO第四次博客
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • Spring Boot模板引擎 (三)
  • js上传
  • Quagga 配置笔记
  • libstdc++.so.6: version `GLIBCXX_3.4.21'
  • JSR-303 Bean Validation 介绍及 Spring MVC 服务端验证最佳实践
  • 阿里云服务提供商分享CDN访问异常该如何排查
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • 各种品牌进入Bios方式
  • WIFI搜索的到别人,却找不到自己家的wifi
  • Go第三方库
  • http和https和ssl和tcp/ip之间的关系和区别
  • 《深入 React 技术栈》
  • 11111111
  • Android优雅地处理按钮重复点击
  • Facebook AccountKit 接入的坑点
  • js 实现textarea输入字数提示
  • ng6--错误信息小结(持续更新)
  • node学习系列之简单文件上传
  • SQLServer之创建显式事务
  • Vue 动态创建 component
  • 产品三维模型在线预览
  • 构建工具 - 收藏集 - 掘金
  • 好的网址,关于.net 4.0 ,vs 2010
  • 机器学习 vs. 深度学习
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 通过几道题目学习二叉搜索树
  • 微信开放平台全网发布【失败】的几点排查方法
  • 由插件封装引出的一丢丢思考
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 组复制官方翻译九、Group Replication Technical Details
  • #pragma once与条件编译
  • (2)(2.10) LTM telemetry
  • (Forward) Music Player: From UI Proposal to Code
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (十五)使用Nexus创建Maven私服
  • (算法)N皇后问题
  • (已解决)什么是vue导航守卫
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)socket Aio demo
  • (转)Unity3DUnity3D在android下调试
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • ??myeclipse+tomcat
  • [20171113]修改表结构删除列相关问题4.txt
  • [BT]BUUCTF刷题第4天(3.22)
  • [BT]BUUCTF刷题第8天(3.26)