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://HdhCmsTestsdzn测试数据/
13 AppSupportURL=http://HdhCmsTestsdzn测试数据/
14 AppUpdatesURL=http://HdhCmsTestsdzn测试数据/
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://HdhCmsTestsdzn测试数据/
13 AppSupportURL=http://HdhCmsTestsdzn测试数据/
14 AppUpdatesURL=http://HdhCmsTestsdzn测试数据/
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://HdhCmsTestsdzn测试数据/
13 AppSupportURL=http://HdhCmsTestsdzn测试数据/
14 AppUpdatesURL=http://HdhCmsTestsdzn测试数据/
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://HdhCmsTestdreams8测试数据 ' , '' , '' , 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: // HdhCmsTestvistaqq测试数据"; tasks: changestartpage
17 、添加“关于”和网站链接按钮
[Code]
procedure URLLabelOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExec( ' open ' , ' http://HdhCmsTestgoogle测试数据 ' , '' , '' , 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://HdhCmsTestsdzn测试数据/
13 AppSupportURL=http://HdhCmsTestsdzn测试数据/
14 AppUpdatesURL=http://HdhCmsTestsdzn测试数据/
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测试数据/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://HdhCmsTestcnblogs测试数据/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息查看更多关于InnoSetup 打包代码 检测.netFramework的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did48655