7 Stimmen

.NET Framework als Voraussetzung für die Installation mit Inno-Setup

Ich habe eine Anwendung, bei der ich prüfen muss, ob .NET FW 3.5 bereits installiert ist. Wenn sie bereits installiert ist, möchte ich eine Messagebox öffnen, die den Benutzer auffordert, sie von der Microsoft-Website herunterzuladen und die Installation zu beenden.

Ich habe den folgenden Code gefunden. Können Sie mir bitte sagen:

a) Von wo aus soll ich diese Funktion aufrufen? b) Sollte ich prüfen, ob .NET FW 3.5 oder höhere Version bereits installiert ist? z.B. Wenn FW 4.0 installiert ist - ist es dann notwendig, 3.5 zu installieren?

Dankeschön

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;

7voto

TLama Punkte 73381

Wenn Sie die Prüfung durchführen möchten, wenn die Installation beginnt, aber bevor das Formular des Assistenten angezeigt wird, verwenden Sie die Option InitializeSetup Ereignishandler für sie. Wenn Sie False an diesen Handler zurückgeben, wird das Setup abgebrochen, wenn True, wird das Setup gestartet. Hier ist ein wenig optimiert Skript Sie gepostet haben:

[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, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5', 
    'Install', InstallValue) or (InstallValue <> 1) then
  begin
    Result := False;
    if MsgBox(ExpandConstant('{cm:DotNetMissing}'), mbConfirmation, MB_YESNO) = IDYES then
      ShellExec('', 'http://www.microsoft.com/downloads/details.aspx?FamilyID=333325fd-ae52-4e35-b531-508d977d32a6&DisplayLang=en',
        '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
  end;
end;

function InitializeSetup: Boolean;
begin
  Result := IsDotNET35Detected;
end;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X