当前位置: 代码迷 >> 综合 >> Innosetup 打包笔记
  详细解决方案

Innosetup 打包笔记

热度:80   发布时间:2023-12-21 08:26:40.0
; 脚本由 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;
varMykeynotExist:boolean;ResultCode: Integer;uicmd: String;Path:string ;ResultCode1: Integer;dotNetV4RegPath:string;beginMykeynotExist:= true;if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FFkkk261-119D-47D9-9AE8-AB8EAFE2DF1E}_is1', 'UninstallString', uicmd) thenbeginMykeynotExist:= false;if MsgBox('系统检测到您已经安装软件,是否卸载重新安装?', mbConfirmation, MB_YESNO) = idYes thenbeginExec(RemoveQuotes(uicmd), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);endend;Result:= MykeynotExistdotNetV4RegPath:= 'SOFTWARE/Microsoft/.NETFramework/Policy/v4.0'if RegKeyExists(HKLM, dotNetV4RegPath) thenbeginResult := true;endelsebeginif MsgBox('系统检测到您没有安装.Net Framework4.0,是否立刻下载并安装?', mbConfirmation, MB_YESNO) = idYes thenbeginPath := 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;endelsebeginMsgBox('没有安装.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, 失败 = Falsefunction 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);varsIcon: String;begin//注意: 替换卸载程序的图标,必须是在卸载程序生成之前!//安装图标与卸载图标的格式与大小一致,否则可能会导致卸载程序出错!if CurStep=ssInstall thenbeginsIcon:= 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没问题!


  相关解决方案