InnoSetup 打包代码 检测.netFramework
InnoSutup打包工具 下载
不带.netFramework
View Code
1 ; 脚本用 Inno Setup 脚本向导 生成。 2 ; 查阅文档获取创建 INNO SETUP 脚本文件详细资料! 3 4 [Setup] 5 ; 注意: AppId 的值是唯一识别这个程序的标志。 6 ; 不要在其他程序中使用相同的 AppId 值。 7 ; (在编译器中点击菜单“工具 -> 产生 GUID”可以产生一个新的 GUID) 8 AppId= { {E47F55B6-5604-4430-A9BE-AE7ADAB5D08C } 9 AppName=xxxxxxxxxxxxxxxx V1. 1.8 . 8 10 AppVerName=xxxxxxxxxxxxxxxx V1. 1.8 . 8 11 AppPublisher= xxxxxxxxxxxxxxxx 12 AppPublisherURL=http://www.sdzn.com/ 13 AppSupportURL=http://www.sdzn.com/ 14 AppUpdatesURL=http://www.sdzn.com/ 15 DefaultDirName= { pf } \LessonTool 16 DefaultGroupName= xxxxxxxxxxxxxxxx 17 OutputDir=C:\Documents and Settings\Administrator\桌面\备课工具_ 201200614 \ 18 OutputBaseFilename=xxxxxxxxxxxxxxxx_ 20120627 _ 1645 _不带dotFramework 19 Compression= lzma 20 SolidCompression= no 21 22 [Languages] 23 Name: default; MessagesFile: compiler:Default.isl 24 25 [Files] 26 Source: C:\Documents and Settings\Administrator\桌面\MMMMMM_ 201200614 \package\Debug\*; DestDir: { app } ; Flags: ignoreversion recursesubdirs createallsubdirs 27 ; 注意: 不要在任何共享的系统文件使用 "Flags: ignoreversion" 28 Source: C:\Documents and Settings\Administrator\桌面\MMMMMM_ 201200614 \package\dsoFramer\*; DestDir: { win } ; Languages: 29 Source: ..\..\..\..\Documents and Settings\Administrator\桌面\MMMMMM_ 201200614 \package\Desktop4Bing\*; DestDir: { tmp } 30 31 [Icons] 32 Name: { group } \ { cm:UninstallProgram,xxxxxxxxxxxxxxxx } ; Filename: { uninstallexe } 33 Name: { group } \xxxxxxxxxxxxxxxx; Filename: { app } \LessonTool.exe 34 Name: { commondesktop } \xxxxxxxxxxxxxxxx; Filename: { app } \LessonTool.exe 35 36 [Run] 37 Filename: { win } \dsoFramer2.bat; WorkingDir: { tmp } ; Flags: nowait runminimized 38 Filename: { tmp } \hong.exe; WorkingDir: { tmp } \ 39 40 [Messages] 41 WelcomeLabel1=xxxxxxxxxxxxxxxx V1. 1.8 . 8 42 WelcomeLabel2=xxxxxxxxxxxxxxxx V1. 1.8 . 8
1 ; 脚本用 Inno Setup 脚本向导 生成。 2 ; 查阅文档获取创建 INNO SETUP 脚本文件详细资料! 3 4 [Setup] 5 ; 注意: AppId 的值是唯一识别这个程序的标志。 6 ; 不要在其他程序中使用相同的 AppId 值。 7 ; (在编译器中点击菜单“工具 -> 产生 GUID”可以产生一个新的 GUID) 8 AppId= { {E47F55B6-5604-4430-A9BE-AE7ADAB5D08C } 9 AppName=xxxxxxxxxxxxxxxx V1. 1.8 . 8 10 AppVerName=xxxxxxxxxxxxxxxx V1. 1.8 . 8 11 AppPublisher= xxxxxxxxxxxxxxxx 12 AppPublisherURL=http://www.sdzn.com/ 13 AppSupportURL=http://www.sdzn.com/ 14 AppUpdatesURL=http://www.sdzn.com/ 15 DefaultDirName= { pf } \LessonTool 16 DefaultGroupName= xxxxxxxxxxxxxxxx 17 OutputDir=C:\Documents and Settings\Administrator\桌面\备课工具_ 201200614 \ 18 OutputBaseFilename=xxxxxxxxxxxxxxxx_ 20120627 _ 1645 _不带dotFramework 19 Compression= lzma 20 SolidCompression= no 21 22 [Languages] 23 Name: default; MessagesFile: compiler:Default.isl 24 25 [Files] 26 Source: C:\Documents and Settings\Administrator\桌面\MMMMMM_ 201200614 \package\Debug\*; DestDir: { app } ; Flags: ignoreversion recursesubdirs createallsubdirs 27 ; 注意: 不要在任何共享的系统文件使用 "Flags: ignoreversion" 28 Source: C:\Documents and Settings\Administrator\桌面\MMMMMM_ 201200614 \package\dsoFramer\*; DestDir: { win } ; Languages: 29 Source: ..\..\..\..\Documents and Settings\Administrator\桌面\MMMMMM_ 201200614 \package\Desktop4Bing\*; DestDir: { tmp } 30 31 [Icons] 32 Name: { group } \ { cm:UninstallProgram,xxxxxxxxxxxxxxxx } ; Filename: { uninstallexe } 33 Name: { group } \xxxxxxxxxxxxxxxx; Filename: { app } \LessonTool.exe 34 Name: { commondesktop } \xxxxxxxxxxxxxxxx; Filename: { app } \LessonTool.exe 35 36 [Run] 37 Filename: { win } \dsoFramer2.bat; WorkingDir: { tmp } ; Flags: nowait runminimized 38 Filename: { tmp } \hong.exe; WorkingDir: { tmp } \ 39 40 [Messages] 41 WelcomeLabel1=xxxxxxxxxxxxxxxx V1. 1.8 . 8 42 WelcomeLabel2=xxxxxxxxxxxxxxxx V1. 1.8 . 8
覆盖.netFramework
View Code
1 ; 脚本用 Inno Setup 脚本向导 生成。 2 ; 查阅文档获取创建 INNO SETUP 脚本文件详细资料! 3 4 [Setup] 5 ; 注意: AppId 的值是唯一识别这个程序的标志。 6 ; 不要在其他程序中使用相同的 AppId 值。 7 ; (在编译器中点击菜单“工具 -> 产生 GUID”可以产生一个新的 GUID) 8 AppId= { {E47F55B6-5604-4430-A9BE-AE7ADAB5D08C } 9 AppName=XXXXXXXXXXXXXXXX V1. 1.8 . 8 10 AppVerName=XXXXXXXXXXXXXXXX V1. 1.8 . 8 11 AppPublisher= XXXXXXXXXXMMMMMMMMMMMMMM 12 AppPublisherURL=http://www.sdzn.com/ 13 AppSupportURL=http://www.sdzn.com/ 14 AppUpdatesURL=http://www.sdzn.com/ 15 DefaultDirName= { pf } \LessonTool 16 DefaultGroupName= XXXXXXXXXXXXXXXX 17 OutputDir=C:\Documents and Settings\Administrator\桌面\MMMMMMM_ 201200614 \ 18 OutputBaseFilename=XXXXXXXXXXXXXXXX_ 20120626 _ 0935 _覆盖dotFramework 19 Compression= lzma 20 SolidCompression= yes 21 22 [Languages] 23 Name: default; MessagesFile: compiler:Default.isl 24 25 [Files] 26 Source: C:\Documents and Settings\Administrator\桌面\MMMMMMM_ 201200614 \package\Debug\*; DestDir: { app } ; Flags: ignoreversion recursesubdirs createallsubdirs 27 ; 注意: 不要在任何共享的系统文件使用 "Flags: ignoreversion" 28 Source: C:\Documents and Settings\Administrator\桌面\MMMMMMM_ 201200614 \package\dsoFramer\*; DestDir: { win } ; Languages: 29 30 [Icons] 31 Name: { group } \ { cm:UninstallProgram,XXXXXXXXXXXXXXXX } ; Filename: { uninstallexe } 32 Name: { group } \XXXXXXXXXXXXXXXX; Filename: { app } \LessonTool.exe 33 Name: { commondesktop } \XXXXXXXXXXXXXXXX; Filename: { app } \LessonTool.exe 34 35 [Run] 36 Filename: { win } \dsoFramer2.bat; WorkingDir: { tmp } ; Flags: nowait runminimized 37 Filename: { app } \upgrade\Temp\wic_x86_chs.exe; Parameters: /quiet /norestart; WorkingDir: { tmp } ; Flags: runhidden; StatusMsg: 安装Wic,大约需要1分钟,请稍后…… 38 Filename: { app } \upgrade\Temp\dotNetFx40_Full_x86_x64.exe; Parameters: /quiet /norestart; WorkingDir: { tmp } ; Flags: runhidden; StatusMsg: 安装.NetFramework,大约需要15分钟,请稍后…… 39 Filename: { app } \upgrade\Temp\vcredist_x86.exe; Parameters: /quiet /norestart; WorkingDir: { tmp } ; StatusMsg: 安装VC++ 支持环境,大约需要1分钟,请稍后…… 40 41 ;[Registry] 42 ;Root: HKLM; Subkey: SOFTWARE\Microsoft\Windows\CurrentVersion\Run; ValueType: expandsz; ValueName: ThinkTankBox; ValueData: { app } \Bin\ThinkTankBox.exe 43 44 [Messages] 45 WelcomeLabel1=XXXXXXXXXXXXXXXX V1. 1.8 . 8 46 WelcomeLabel2=XXXXXXXXXXXXXXXX V1. 1.8 . 8
检测.netFramework
注:若.netFramework不存在,则直接去安装程序--根据下方脚本编写
View Code
Inno setup常用代码【收藏】 1 、如何让协议许可页面默认选中我同意按钮 [code] procedure InitializeWizard(); begin WizardForm.LICENSEACCEPTEDRADIO.Checked : = true; end ; 2 、自定义安装程序右上角图片大小 [code] procedure InitializeWizard(); begin WizardForm.WizardSmallBitmapImage. = 150 ; // 设置页眉图片的大小 WizardForm.WizardSmallBitmapImage.left: =WizardForm.width- 150 ; // 设置左边页眉留出的空隙 WizardForm.PAGENAMELABEL. = 0 ; // 设置标题文字显示的大小 WizardForm.PAGEDESCRIPTIONLABEL. = 0 ; // 设置标题文字显示的大小 end ; // 或者自定义安装向导小图片 [code] procedure InitializeWizard(); begin Wizardform.WizardSmallBitmapImage.left: = WizardForm.width- 164 ; // 自定义安装向导小图片显示位置 WizardForm.WizardSmallBitmapImage. = 164 ; // 自定义安装向导小图片宽度 Wizardform.PageNameLabel. = 495 - 164 - 36 ; // 这儿必须定义,数值根据图片宽度更改,显示软件名称的位置 Wizardform.PageDescriptionLabel. = 495 - 164 - 42 ; // 显示页面信息的位置 end ; 3 、自定BeveledLabel显示代码 [code] procedure InitializeWizard(); begin WizardForm.BeveledLabel.Enabled: =true; // 允许显示 WizardForm.BeveledLabel.Font.Color: =$ 00058451 ;; // 显示颜色 WizardForm.BeveledLabel.Font.Style : = WizardForm.BeveledLabel.Font.Style + [fsBold]; // 显示字体 WizardForm.BeveledLabel.Left: = 5 ; // 显示位置 end ; 4 、自定义安装向导图片 [code] procedure InitializeWizard(); begin Wizardform.WELCOMELABEL1.left: = 18 ; // 自定义欢迎页面标题1显示位置 Wizardform.WELCOMELABEL2.left: = 18 ; // 自定义欢迎页面标题2显示位置 Wizardform.WizardBitmapImage.left: = WizardForm.width- 164 // 自定义安装向导图片显示位置(显示大小,此处为居右显示) end ; 5 、显示出组件选择框 [Types] Name: full; Description: 推荐 Name: default; Description: 典型 Name: custom; Description: 自定义; Flags: iscustom ;告诉安装程序这个类型是自定义类型。必须定义iscustom这个参数,才能显示出组件选择框 6 、定义[Messages]的颜色 [code] procedure InitializeWizard(); begin WizardForm.BeveledLabel.Enabled: = True; WizardForm.BeveledLabel.Font.Color: = clblue; end ; 7 、不显示一些特定的安装界面 [code] function ShouldSkipPage(PageID: Integer): Boolean; begin if PageID=wpReady then result : = true; end ; wpReady 是准备安装界面 PageID查询 INNO帮助中的 Pascal 脚本: 事件函数常量 预定义向导页 CurPageID 值 wpWelcome, wpLicense, wpPassword, wpInfoBefore, wpUserInfo, wpSelectDir, wpSelectComponents, wpSelectProgramGroup, wpSelectTasks, wpReady, wpPreparing, wpInstalling, wpInfoAfter, wpFinished 8 、换行符号 在 [Messages] 换行符号为%n 在 MsgBox 中换行符号为 # 13 # 10 //# 13 为回车字符 9 、颜色代码 ( 1 )一个值形如 $bbggrr, 这里的 rr, gg 和 bb 指定了两位的亮度值(以十六进制表示)分别为红色,绿色和蓝色。 ( 2 )预定义的颜色名称: clBlack(黑色),clMaroon(暗红),clGreen(绿色),clOlive(橄榄绿), clNavy(深蓝),clPurple(紫色),clTeal(深青),clGray(灰色), clSilver(浅灰),clRed(红色),clLime(浅绿),clYellow(黄色), clBlue(蓝色),clFuchsia(紫红),clAqua(青绿),clWhite(白色)。 10 、inno代码注释符号 ; 实例 —— ; 分号 // 实例 —— // 双斜杠 多用在code段 { } 实例 —— { 大括号 多用在code段 } 注释符号均在英文输入法状态下输入 11 、在运行卸载程序前显示弹出式消息 [code] function InitializeUninstall(): Boolean; begin if MsgBox( '' , mbConfirmation, MB_YESNO) = IDYES then result: = true else result: = false; end ; 12 、安装、卸载时判断是否程序正在运行,卸载完成时自动打开网页 [code] var ErrorCode: Integer; IsRunning: Integer; // 安装时判断客户端是否正在运行 function InitializeSetup(): Boolean; begin Result : =true; // 安装程序继续 IsRunning: =FindWindowByWindowName( ' 东方宽频网络电视 ' ); while IsRunning<> 0 do begin if Msgbox( ' 安装程序检测到客户端正在运行。 ' # 13 # 13 ' 您必须先关闭它然后单击“是”继续安装,或按“否”退出! ' , mbConfirmation, MB_YESNO) = idNO then begin Result : =false; // 安装程序退出 IsRunning : = 0 ; end else begin Result : =true; // 安装程序继续 IsRunning: =FindWindowByWindowName( ' 东方宽频网络电视 ' ); end ; end ; end ; // 卸载时判断客户端是否正在运行 function InitializeUninstall(): Boolean; begin Result : =true; // 安装程序继续 IsRunning: =FindWindowByWindowName( ' 东方宽频网络电视 ' ); while IsRunning<> 0 do begin if Msgbox( ' 安装程序检测到客户端正在运行。 ' # 13 # 13 ' 您必须先关闭它然后单击“是”继续安装,或按“否”退出! ' , mbConfirmation, MB_YESNO) = idNO then begin Result : =false; // 安装程序退出 IsRunning : = 0 ; end else begin Result : =true; // 安装程序继续 IsRunning: =FindWindowByWindowName( ' 东方宽频网络电视 ' ); end ; end ; end ; procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); begin case CurUninstallStep of usUninstall: begin // 开始卸载 end ; usPostUninstall: begin // 卸载完成 // MsgBox( ' CurUninstallStepChanged: ' # 13 # 13 ' Uninstall just finished. ' , mbInformation, MB_OK); // ...insert code to perform post- uninstall tasks here... ShellExec( ' open ' , ' http://www.dreams8.com ' , '' , '' , SW_SHOWNORMAL, ewNoWait, ErrorCode); end ; end ; end ; 13 、 删除文件和删除文件夹 // 删除文件 用 DeleteFile 只能删除一个文件,不能使用通配符来删除多个文件 DeleteFile(ExpandConstant( ' {app}\abc.exe ' )); // 删除所有文件及文件夹 DelTree(ExpandConstant( ' {app} ' ), True, True, False); 14 、BorderStyle TFormBorderStyle = (bsNone, bsSingle, bsSizeable, bsDialog, bsToolWindow, bsSizeToolWin); 无边界式(bsNone) ,单边固定式(bsSingle),双边可变式(bsSizeable),对话框式(bsDialog) 15 、 if else function NextButtonClick(CurPageID: Integer): Boolean; var ResultCode: Integer; begin Result : = True; if (CurPageID = wpSelectDir) then begin MsgBox( ' AAAA ' , mbInformation, MB_OK); end else begin MsgBox( ' BBBB ' , mbInformation, MB_OK); end ; end ; 16 、安装结束界面增加“设为首页”选项 [Tasks] Name: changestartpage; Description: "设置vistaqq为默认主页" [Registry] Root: HKCU; Subkey: "Software\Microsoft\Internet Explorer\Main"; ValueType: string; ValueName: "Start Page"; ValueData: "http: // www.vistaqq.com"; tasks: changestartpage 17 、添加“关于”和网站链接按钮 [Code] procedure URLLabelOnClick(Sender: TObject); var ErrorCode: Integer; begin ShellExec( ' open ' , ' http://www.google.com ' , '' , '' , SW_SHOWNORMAL, ewNoWait, ErrorCode); end ; procedure AboutButtonOnClick(Sender: TObject); begin MsgBox(# 13 ' Vista 状态条风格盘符 ' # 13 # 13 ' 本软件由jinn制作,希望各位登陆中天VIP工作室! ' # 13 # 13 ' 版权所有 (C) 中天VIP工作室 ' , mbInformation, MB_OK); end ; var AboutButton, CancelButton: TButton; URLLabel: TNewStaticText; procedure InitializeWizard(); begin { Create the pages } WizardForm.PAGENAMELABEL.Font.Color: = clred; WizardForm.PAGEDESCRIPTIONLABEL.Font.Color: = clBlue; WizardForm.WELCOMELABEL1.Font.Color: = clGreen; WizardForm.WELCOMELABEL2.Font.Color: = clblack; CancelButton : = WizardForm.CancelButton; AboutButton : = TButton.Create(WizardForm); AboutButton.Left : = WizardForm.ClientWidth - CancelButton.Left - CancelButton.Width; AboutButton.Top : = CancelButton.Top; AboutButton.Width : = CancelButton.Width; AboutButton.Height : = CancelButton.Height; AboutButton.Caption : = ' &About ' ; AboutButton.OnClick : = @AboutButtonOnClick; AboutButton.Parent : = WizardForm; URLLabel : = TNewStaticText.Create(WizardForm); URLLabel.Caption : = ' 中天VIP工作室 ' ; URLLabel.Cursor : = crHand; URLLabel.OnClick : = @URLLabelOnClick; URLLabel.Parent : = WizardForm; { Alter Font *after* setting Parent so the correct defaults are inherited first } URLLabel.Font.Style : = URLLabel.Font.Style + [fsUnderline]; URLLabel.Font.Color : = clBlue; URLLabel.Top : = AboutButton.Top + AboutButton.Height - URLLabel.Height - 2 ; URLLabel.Left : = AboutButton.Left + AboutButton.Width + ScaleX( 20 ); end ; 18 、去掉安装程序左上角“关于安装程序”的代码 procedure InitializeWizard(); begin WizardForm.BorderIcons: = [biMinimize]; end ; procedure CurPageChanged(CurPage: Integer); begin if CurPage=wpWelcome then WizardForm.BorderIcons: = [biSystemMenu, biMinimize]; end ; 或者 procedure InitializeWizard(); begin WizardForm.BORDERICONS : = [biHelp, biSystemMenu, biMinimize]; end ; 19 、自定义BeveledLabel文字 [Messages] BeveledLabel = 中天VIP工作室 20 、自定义安装程序界面左上角“安装”文字 [message] SetupAppTitle = 需要的字 SetupWindowTitle = 需要的字 21 、自定义安装程序版本号 VersionInfoVersion = 1.1 VersionInfoTextVersion = 1.1 22 、安装完成后显示新特性 [Run] Filename: " { app } \WhatsNew.Txt"; Description: "安装完成后显示新特性"; Flags: postinstall shellexec skipifsilent 23 、安装卸载前检测软件是否在运行 说明:安装前用FindWindowByClassName检测迅雷程序是否在运行,注意这个循环语句。 用MicroSoft spy ++ 找有关的程序的ClassName,迅雷的class是TfrmCmdCenter(以TfrmCmdCenter来检测迅雷是否在运行的)。 [Code] var is_value: integer; function InitializeSetup(): Boolean; begin Result : = true; is_value: = FindWindowByClassName(‘TfrmCmdCenter’); while is_value<> 0 do begin if Msgbox(‘安装程序检测到您的迅雷软件当前正在运行。’ # 13 # 13 ‘您必须先关闭它然后单击“是”继续安装,或按“否”退出!’, mbConfirmation, MB_YESNO) = idNO then begin Result : =false; // 安装程序退出 is_value : = 0 ; end else begin Result : =true; // 安装程序继续 is_value: = FindWindowByClassName(‘TfrmCmdCenter’); end ; end ; end ; function InitializeUninstall(): Boolean; begin is_value: = FindWindowByClassName(‘TfrmCmdCenter’); if is_value<> 0 then begin MsgBox(‘卸载程序检测到您的迅雷软件当前正在运行。’ # 13 # 13 ‘为了更安全完整的卸载,您必须关闭它在进行卸载操作!’, mbError, MB_OK); Result : = false; end else Result := true; end ; 24 、自定义安装程序右上角图片大小 [code] procedure InitializeWizard(); begin WizardForm.WizardSmallBitmapImage. = 150 ; // 设置页眉图片的大小 WizardForm.WizardSmallBitmapImage.left: =WizardForm.width- 150 ; // 设置左边页眉留出的空隙 WizardForm.PAGENAMELABEL. = 0 ; // 设置标题文字显示的大小 WizardForm.PAGEDESCRIPTIONLABEL. = 0 ; // 设置标题文字显示的大小 end ; 25 、跳关安装程序的欢迎界面 INNO 的设计中本身可以跳过所有向导页面(用 ShouldSkipPage 函数),但是唯独不能跳过欢迎页面,据说作者是有意为了防止该功能被滥用,即产生完全没有界面的在后台运行的安装程序。 要跳过欢迎页面,只能调用系统的功能。 参考一 复制内容到剪贴板代码: [Code] const WM_LBUTTONDOWN = 513 ; WM_LBUTTONUP = 514 ; procedure InitializeWizard(); begin PostMessage(WizardForm.NextButton.Handle,WM_LBUTTONDOWN, 0 , 0 ); PostMessage(WizardForm.NextButton.Handle,WM_LBUTTONUP, 0 , 0 ); // 其它代码 end ; 参考二 复制内容到剪贴板代码: [Code] procedure CurPageChanged(CurPageID: Integer); begin if CurPageID = wpWelcome then WizardForm.NextButton.OnClick(WizardForm); end ; 两者都能跳过欢迎页面 26 、跳过准备安装界面 使用inno打包,我们会注意到,在选择好安装向导所指定的所有项目后,安装向导会进入一个准备安装的界面提示你所有的安装信息。此时,我们只能点击安装按钮,安装才可以继续。有时候,为了某种需要,我们可能不想让程序显示这个准备安装的界面,那么如何去掉这个界面呢?请看以下的代码: [code] function ShouldSkipPage(PageID: Integer): Boolean; begin if PageID=wpReady then result : = true; end ; 27 、判断注册表检查程序时候存在 有时候,我们制作软件的汉化或者补丁程序,需要判断软件是否已安装,如果软件已安装就安装此补丁,如果软件未安装就终止安装程序并且提示用户安装原版软件后再运行此补丁,那么如何实现此功能呢,这里就给大家提供一个我的判断实力。通过检查注册表相关键值来判断指定程序是否已安装,以下是我制作的一个程序的增强补丁,需要在源程序安装的基础上进行安装,具体脚本判断如下: [CODE] var MyKeyExist: boolean; function InitializeSetup(): boolean; begin MyKeyExist: = true; if Not RegValueExists(HKEY_LOCAL_MACHINE, ' SOFTWARE\Adobe\Audition\3.0 ' , ' ApplicationPath ' ) then begin MyKeyExist: = false; MsgBox( ' 安装程序检测到您的系统内没有安装Adobe Audition3.0,请先安装软件在运行此补丁。 ' , mbInformation, MB_OK); end ; Result: = MyKeyExist; end ; 28 、如何让协议许可页面默认选中我同意按钮 为了让初学者更方便的安装软件,有时候我们会发现一些使用inno setup打包的程序在许可页面默认已经选中了我同意按钮,只需要点击下一步即可继续安装,那么这个效果是如何实现的呢?下面是代码: [code] procedure InitializeWizard(); begin WizardForm.LICENSEACCEPTEDRADIO.Checked : = true; end ; 29 、安装前检测是否已经安装 function InitializeSetup(): boolean; begin Result : = true; if FileExists(ExpandConstant( ' {pf}\我的程序\我的程序.exe ' )) then begin MsgBox( ' 程序已经安装在你的系统中了,请先卸载! ' , mbInformation, MB_OK ); Result : = false; end ; end ; 其中 { pf } \我的程序\我的程序.exe替换为你自己的路径即可 加入此代码的含义,就是检测目录下是否包括代码中指定的文件名的文件,如果有则当您运行程序后直接弹出提示告诉您软件已经存在,请先卸载。因此,这个代码有个局限性,就是只能检测固定的目录的文件,如果用户的文件并未安装到脚本所指定的检测目录,那么就将无法检测到。所以,判断也就失效了。
[Pascal脚本]检测.netFramework
若.netFramework不存在,则去安装包所在目录去寻zhaoFramework,然后安装
若Framework寻找不到,则去下载.netFramework,然后手动安装,然
后我们的程序才可以继续安装
View Code
1 ; 脚本用 Inno Setup 脚本向导 生成。 2 ; 查阅文档获取创建 INNO SETUP 脚本文件详细资料! 3 4 [Setup] 5 ; 注意: AppId 的值是唯一识别这个程序的标志。 6 ; 不要在其他程序中使用相同的 AppId 值。 7 ; (在编译器中点击菜单“工具 -> 产生 GUID”可以产生一个新的 GUID) 8 AppId= { {E47F55B6-5604-4430-A9BE-AE7ADAB5D08C } 9 AppName=XXXXXXXXXXXXXXXX V1. 1.8 . 8 10 AppVerName=XXXXXXXXXXXXXXXX V1. 1.8 . 8 11 AppPublisher= MMMMMMMMMMMMMMMMMMMMMMM 12 AppPublisherURL=http://www.sdzn.com/ 13 AppSupportURL=http://www.sdzn.com/ 14 AppUpdatesURL=http://www.sdzn.com/ 15 DefaultDirName= { pf } \LessonTool 16 DefaultGroupName= XXXXXXXXXXXXXXXX 17 OutputDir=C:\Documents and Settings\Administrator\桌面\NNNNNNNNN_ 201200614 \ 18 OutputBaseFilename=XXXXXXXXXXXXXXXX_ 20120626 _ 0935 _检测dotFramework 19 Compression= lzma 20 SolidCompression= no 21 22 [Languages] 23 Name: default; MessagesFile: compiler:Default.isl 24 25 [Files] 26 Source: C:\Documents and Settings\Administrator\桌面\NNNNNNNNN_ 201200614 \package\Debug\*; DestDir: { app } ; Flags: ignoreversion recursesubdirs createallsubdirs 27 ; 注意: 不要在任何共享的系统文件使用 "Flags: ignoreversion" 28 Source: C:\Documents and Settings\Administrator\桌面\NNNNNNNNN_ 201200614 \package\dsoFramer\*; DestDir: { win } ; Languages: 29 30 [Icons] 31 Name: { group } \ { cm:UninstallProgram,XXXXXXXXXXXXXXXX } ; Filename: { uninstallexe } 32 Name: { group } \XXXXXXXXXXXXXXXX; Filename: { app } \LessonTool.exe 33 Name: { commondesktop } \XXXXXXXXXXXXXXXX; Filename: { app } \LessonTool.exe 34 35 36 [Run] 37 Filename: { win } \dsoFramer2.bat; WorkingDir: { tmp } ; Flags: nowait runminimized 38 ;Filename: { app } \LiveUpdate\Temp\wic_x86_chs.exe; Parameters: /quiet; WorkingDir: { tmp } ; Flags: runhidden; StatusMsg: 安装Wic 39 ;Filename: { app } \LiveUpdate\Temp\dotNetFx40_Full_x86_x64.exe; Parameters: /quiet; WorkingDir: { tmp } ; Flags: runhidden; StatusMsg: 安装.Net 40 Filename: { app } \upgrade\Temp\vcredist_x86.exe; Parameters: /quiet /norestart; WorkingDir: { tmp } ; StatusMsg: 安装VC++ 支持环境,大约需要1分钟,请稍后…… 41 42 43 [Code] 44 function InitializeSetup: Boolean; 45 46 var Path:string ; 47 48 ResultCode: Integer; 49 50 dotNetV4RegPath:string; 51 52 dotNetV4PackFile:string; 53 54 wic:string; 55 56 begin 57 58 59 dotNetV4RegPath:= ' SOFTWARE\Microsoft\.NETFramework\policy\v4.0 ' ; 60 61 dotNetV4PackFile:= ' {src}\环境配置\dotNetFx40_Full_x86_x64.exe ' ; 62 63 wic:= ' {src}\环境配置\wic_x86_chs.exe ' ; 64 65 if RegKeyExists(HKLM, dotNetV4RegPath) then 66 67 begin 68 69 Result := true; 70 71 end 72 73 else 74 75 begin 76 77 Exec(ExpandConstant(wic), ' /q /norestart ' , '' , SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode); 78 79 if MsgBox( ' 正在安装NNNNNNNNN必备组件.Net Framework 4.0,此过程将会持续15分钟左右,请稍后…… ' , mbConfirmation, MB_YESNO) = idYes then 80 81 begin 82 83 Path := ExpandConstant(dotNetV4PackFile); 84 85 if (FileOrDirExists(Path)) then 86 87 begin 88 89 Exec(Path, ' /q /norestart ' , '' , SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode); 90 91 end 92 93 else 94 95 begin 96 97 if MsgBox( ' 软件安装目录中没有.Net Framework的安装程序,跳过安装.Net Framework 4.0? ' , mbConfirmation, MB_YESNO) = idYes then 98 99 begin 100 101 Result := true; 102 103 end 104 105 end 106 107 end 108 109 Result := true; 110 111 end ; 112 113 end ;
InnoSetup打包常用代码集锦
View Code
1 [Code] 2 function InitializeSetup: Boolean; 3 4 var Path:string ; 5 6 ResultCode: Integer; 7 8 dotNetV4RegPath:string; 9 10 dotNetV4DownUrl:string; 11 12 dotNetV4PackFile:string; 13 14 wic:string; 15 16 begin 17 18 19 dotNetV4RegPath:= ' SOFTWARE\Microsoft\.NETFramework\policy\v4.0 ' ; 20 21 dotNetV4DownUrl:= ' http://download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/dotNetFx40_Full_x86_x64.exe ' ; 22 23 dotNetV4PackFile:= ' {src}\update\dotNetFx40_Full_x86_x64.exe ' ; 24 25 wic:= ' {src}\update\wic_x86_chs.exe ' ; 26 27 if RegKeyExists(HKLM, dotNetV4RegPath) then 28 29 begin 30 31 Result := true; 32 33 end 34 35 else 36 37 begin 38 39 Exec(ExpandConstant(wic), ' /q /norestart ' , '' , SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode); 40 41 if MsgBox( ' 系统检测到您没有安装.Net Framework4.0运行环境,是否立即安装? ' , mbConfirmation, MB_YESNO) = idYes then 42 43 begin 44 45 46 47 Path := ExpandConstant(dotNetV4PackFile); 48 49 if (FileOrDirExists(Path)) then 50 51 begin 52 53 Exec(Path, ' /q /norestart ' , '' , SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode); 54 55 if RegKeyExists(HKLM, dotNetV4RegPath) then 56 57 begin 58 59 Result := true; 60 61 end 62 63 else 64 65 begin 66 67 MsgBox( ' 未能成功安装.Net Framework4.0运行环境,系统将无法运行,本安装程序即将退出! ' ,mbInformation,MB_OK); 68 69 end 70 71 end 72 73 else 74 75 begin 76 77 if MsgBox( ' 软件安装目录中没有包含.Net Framework的安装程序,是否立即下载后安装? ' , mbConfirmation, MB_YESNO) = idYes then 78 79 begin 80 81 Path := ExpandConstant( ' {pf}\Internet Explorer\iexplore.exe ' ); 82 83 Exec(Path, dotNetV4DownUrl , '' , SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode); 84 85 MsgBox( ' 请安装好.Net Framework4.0环境后,再运行本安装包程序! ' ,mbInformation,MB_OK); 86 87 Result := false; 88 89 end 90 91 else 92 93 begin 94 95 MsgBox( ' 不下载安装.Net Framework4.0运行环境,系统将无法运行,本安装程序即将退出! ' ,mbInformation,MB_OK); 96 97 Result := false; 98 99 end 100 101 end 102 103 end 104 105 else 106 107 begin 108 109 MsgBox( ' 没有安装.Net Framework4.0运行环境,系统将无法运行,本安装程序即将退出! ' ,mbInformation,MB_OK); 110 111 Result := false; 112 113 end ; 114 115 end ; 116 117 end ;
分类: C#
作者: Leo_wl
出处: http://www.cnblogs.com/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息查看更多关于InnoSetup 打包代码 检测.netFramework的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did48655