|
正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!
您需要 登录 才可以下载或查看,没有账号?立即注册
x
很多用户在制作安装包的时候,要从注册表中判断客户的电脑中是否安装 Net Framework 组件,如果没有安装则从网络下载安装,或者从临时文件中安装。网络下载减少安装包体积,要是用户没有联网就麻烦了,所以,本站提供了两个思路,就用两种方法吧!
方法一,判断不存在则从网络下载
- [code]
- function InitializeSetup: Boolean;
- var Path:string ;
- ResultCode: Integer;
- begin
- if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\.NETFramework\policy\v2.0') then
- begin
- Result := true;
- end
- else
- begin
- if MsgBox('系统检测到您没有安装.Net Framework2.0,是否立刻下载并安装?', mbConfirmation, MB_YESNO) = idYes then
- begin
- Path := ExpandConstant('{pf}\Internet Explorer\iexplore.exe');
- Exec(Path, 'http://www.xxx.com/down/dotnetfx2.exe', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
- MsgBox('请安装好.Net Framework2.0环境后,再运行本安装包程序!',mbInformation,MB_OK);
- Result := false;
- end
- else
- begin
- MsgBox('没有安装.Net Framework2.0环境,无法运行XXX程序,本安装程序即将退出!',mbInformation,MB_OK);
- Result := false;
- end;
- end;
- end;
复制代码
方法二,从本地安装
- [Files]
- .........
- Source: "F:\sgzy\dotnetfx20.exe"; DestDir: "{tmp}"; Flags: ignoreversion
- ; 文件释放到临时文件中,重启后自动删掉
- [code]
- function CheckDotNet2_0():boolean;
- begin
- Result:=not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\.NETFramework\policy\v2.0');
- end;
- function InitializeSetup(): Boolean;
- var Path:string;
- ResultCode: Integer;
- begin
- if CheckDotNet2_0() then
- begin
- ExtractTemporaryFile('dotnetfx20.exe');
- Exec(ExpandConstant('{tmp}\dotnetfx20.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
- end;
- end;
复制代码- [Files]
- Source: "E:\Program Files\XX\dotNetFx40_Client_setup.exe"; DestDir: "{tmp}"; Flags: ignoreversion
- ; dotNetFx40_Client_setup.exe是个.net4.0预安装包,免去了打开网页下载等步骤,提升用户体验,同时体积也小
- ; dotNetFx40_Client_setup.exe不和其他软件文件放在一个目录,它就不会拷贝到安装后的目录中,而是在临时目录中,这样重启机器之后就会被删除掉
-
- [Code]
- function CheckDotNet4_0():boolean;
- begin
- Result:=not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\.NETFramework\policy\v4.0');
- end;
- function InitializeSetup(): Boolean;
- var Path:string;
- ResultCode: Integer;
- begin
- if CheckDotNet4_0() then
- begin
- if MsgBox('系统检测到您没有安装.Net Framework4.0,是否立刻下载并安装?', mbConfirmation, MB_YESNO) = idYes then
- begin
- ExtractTemporaryFile('dotNetFx40_Client_setup.exe');
- Exec(ExpandConstant('{tmp}\dotNetFx40_Client_setup.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
- Result := true;
- end
- else
- begin
- MsgBox('没有安装.Net Framework4.0环境,无法运行【XX】程序,本安装程序即将退出!',mbInformation,MB_OK);
- Result := false;
- end;
- end
- else
- begin
- Result := true;
- end;
- end;
-
复制代码
备注:
举一反三,大家开动扩散思维,该方法一样适用于检测.Net Framework3.0/3.5/4.0/4.5或者其他软件,依此类推。
|
|