我有一个应用程序,我必须检查是否已安装.NET FW 3.5.如果已安装,我想打开一个消息框,要求用户从Microsoft网站下载并停止安装.
我找到了以下代码.你能告诉我吗:
a)我应该从哪里调用此函数?
b)我应该检查是否已安装.NET FW 3.5或更高版本?例如如果安装了FW 4.0 – 是否需要安装3.5?
谢谢
- function IsDotNET35Detected(): Boolean;
- var
- ErrorCode: Integer;
- netFrameWorkInstalled : Boolean;
- isInstalled: Cardinal;
- begin
- result := true;
- // Check for the .Net 3.5 framework
- isInstalled := 0;
- netFrameworkInstalled := RegQueryDWordValue(HKLM,'SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5','Install',isInstalled);
- if ((netFrameworkInstalled) and (isInstalled <> 1)) then netFrameworkInstalled := false;
- if netFrameworkInstalled = false then
- begin
- if (MsgBox(ExpandConstant('{cm:dotnetmissing}'),mbConfirmation,MB_YESNO) = idYes) then
- begin
- ShellExec('open','http://www.microsoft.com/downloads/details.aspx?FamilyID=333325fd-ae52-4e35-b531-508d977d32a6&DisplayLang=en','',SW_SHOWNORMAL,ewNoWait,ErrorCode);
- end;
- result := false;
- end;
- end;
解决方法
如果要在安装开始时但在显示向导表单之前执行检查,请使用
InitializeSetup
事件处理程序.当您将False返回到该处理程序时,安装程序将中止,当为True时,安装程序将启动.这是您发布的一些优化脚本:
- [Setup]
- AppName=My Program
- AppVersion=1.5
- DefaultDirName={pf}\My Program
- [CustomMessages]
- DotNetMissing=.NET Framework 3.5 is missing. Do you want to download it ? Setup will now exit!
- [Code]
- function IsDotNET35Detected: Boolean;
- var
- ErrorCode: Integer;
- InstallValue: Cardinal;
- begin
- Result := True;
- if not RegQueryDWordValue(HKLM,InstallValue) or (InstallValue <> 1) then
- begin
- Result := False;
- if MsgBox(ExpandConstant('{cm:DotNetMissing}'),MB_YESNO) = IDYES then
- ShellExec('',ErrorCode);
- end;
- end;
- function InitializeSetup: Boolean;
- begin
- Result := IsDotNET35Detected;
- end;