Innosetup 打包笔记

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

#define MyAppName "软件名称"
#define MyAppVersion "1.0"
#define MyAppPublisher "发布软件公司"
; 发布公司网址
 #define MyAppURL "http://www.baidu.com/"
;可执行文件
 #define MyAppExeName "baidu.exe"

[Setup]
; 注: AppId的值为单独标识该应用程序。
; 不要为其他安装程序使用相同的AppId值。
; (生成新的GUID,点击 工具|在IDE中生成GUID。)
;此ID是唯一的软件标识可利用此标识判断软件是否已经安装
 AppId={{FFkk9261-119D-47D9-9AE8-AB8EAFE2DF1E}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputBaseFilename=setup
SetupIconFile=D:\安装包图标.ico
Compression=lzma
SolidCompression=yes
 ; 在 Windows添加删除程序 对话框中,显示的卸载名称
UninstallDisplayName=我的程序
; 在 Windows添加删除程序 对话框中,显示的卸载图标    
UninstallDisplayIcon=卸载图标.ico   
WizardImageFile=安装软件面板左侧图片.bmp    
WizardSmallImageFile=安装软件右侧小图片.bmp  

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

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

[Files]
Source: "各种dll各种文件路径"; DestDir: "{app}"; Flags: ignoreversion
;加载文件夹下文件
;下面这句是要在安装目录下存放创建AAAA文件夹,并将Sourse目录文件夹下的所有文件放到此AAAA文件夹下
 Source: "D:\AAAA\*"; DestDir: "{app}\AAAA"; Flags: ignoreversion  overwritereadonly ignoreversion recursesubdirs createallsubdirs
; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion”
; NOTE: Don't use "Flags: ignoreversion" on any shared system files;卸载图标位置
Source:  "卸载图标.ico"; Flags: solidbreak dontcopy
;卸载插件位置
Source: "D:\UpdateIcon.dll"; Flags: solidbreak dontcopy
Source: "D:\delete.ico"; DestDir: "{app}"; Flags: ignoreversion

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"     ;  IconFilename: "{app}\快速启动栏软件启动图标.ico"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"   ;  IconFilename: "{app}\快速启动栏软件卸载图标.ico"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon    ;  IconFilename: "{app}\桌面快捷方式图标.ico"

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
[code]
function InitializeSetup():boolean;
var
  MykeynotExist:boolean;
  ResultCode: Integer;
  uicmd: String;
  Path:string ;
	 ResultCode1: Integer;
 dotNetV4RegPath:string;
 begin
  MykeynotExist:= true;
  if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FFkkk261-119D-47D9-9AE8-AB8EAFE2DF1E}_is1', 'UninstallString', uicmd) then
  begin
        MykeynotExist:= false;
  if MsgBox('系统检测到您已经安装软件,是否卸载重新安装?', mbConfirmation, MB_YESNO) = idYes then
	    begin
      
      Exec(RemoveQuotes(uicmd), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
      end
      
  end;
  Result:= MykeynotExist
 dotNetV4RegPath:= 'SOFTWARE/Microsoft/.NETFramework/Policy/v4.0'
 if RegKeyExists(HKLM, dotNetV4RegPath) then
	  begin
	    Result := true;
	  end
	  else
	  begin
	    if MsgBox('系统检测到您没有安装.Net Framework4.0,是否立刻下载并安装?', mbConfirmation, MB_YESNO) = idYes then
	    begin
	      Path := ExpandConstant('{pf}/Internet Explorer/iexplore.exe');
	      Exec(Path, 'http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=17718', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode1);
	      MsgBox('请安装好.Net Framework4.0环境后,再运行本安装包程序!',mbInformation,MB_OK);
	      Result := false;
	    end
	    else
	    begin
	      MsgBox('没有安装.Net Framework4.0环境,无法运行软件,本安装程序即将退出!',mbInformation,MB_OK);
	      Result := false;
	    end;
	  end;
end;
 // function InitializeSetup():boolean;
	//var Path:string ;
	 //  ResultCode: Integer;
//	begin
	  
	//end;

//插件函数用法

//参数: 句柄(插件错误对话框的父句柄), exe文件完整路径名称, (exe文件中要替换的)图标资源名称, 图标文件的完整路径名称, (exe中要替换的图标资源所在)语系

//返回值: 成功 = Tr, 失败 = False

function UpdateIcon(const hWnd: Integer; const exeFileName, exeIcon, IcoFileName: String; wlangID: DWORD): Boolean;

external 'UpdateIcon@files:UpdateIcon.dll stdcall';

 

//替换卸载程序的图标

function UpdateUninstIcon(const IcoFileName: String): Boolean;

begin

       //要替换图标的exe文件路径名称留空,则插件会自动替换掉Inno卸载程序的图标,其它参数类似!

       Result:= UpdateIcon(MainForm.Handle, '', '', IcoFileName, 0);

       //替换卸载图标

end;

 

procedure CurStepChanged(CurStep: TSetupStep);

var

  sIcon: String;

begin

       //注意: 替换卸载程序的图标,必须是在卸载程序生成之前!

       //安装图标与卸载图标的格式与大小一致,否则可能会导致卸载程序出错!

       if CurStep=ssInstall then

       begin

              sIcon:= ExpandConstant('{tmp}\卸载图标.ico'); //定义卸载图标

              ExtractTemporaryFile(ExtractFileName(sIcon)); //释放卸载图标

              //要替换图标的exe文件路径名称留空,则插件会自动替换掉Inno卸载程序的图标!

              UpdateUninstIcon(sIcon);//替换卸载图标

  end;

end;
[Messages]
BeveledLabel=安装面板下面横线左侧文本


首先判断是否已经安装此软件→检测运行环境→安装

此篇关于打包工具innosetup的使用和理解都是作者亲身应用,做笔记以便后用!

注意:不知道什么原因

RegKeyExists(HKLM, 'SOFTWARE\Microsoft\.NETFramework\policy\v4.0')这样写判断不出版本的


dotNetV4RegPath:='SOFTWARE\Microsoft\.NETFramework\policy\v4.0';

RegKeyExists(HKLM, dotNetV4RegPath)
通过dotNetV4RegPath变量来运行RegKeyExists没问题!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值