Что такое параметр MinServicePack в IsDotNetInstalled Inno Setup - PullRequest
1 голос
/ 13 марта 2020

Я только что заметил, что Inno Setup 6.0.4 теперь недоступна и имеет новую функцию IsDotNetInstalled.

В данный момент я использую этот скрипт, чтобы увидеть, 4.6.2 установлено:

{ Determines if .NET 4.6.2 (or higher) is installed }
function IsDotNetDetected(): boolean;
var
    strKey64: string;
    strKey86: string;
    dwInstalled: cardinal;
begin
  strKey64 := 'SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full';
  strKey86 := 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full';

  result := false; { Assume .NET Framework 4.6.2 is not installed }

  { For more information, see: }
  { http://msdn.microsoft.com/en-us/library/hh925568%28v=vs.110%29.aspx#net_b }
  if(Is64BitInstallMode()) then begin
    if (RegValueExists(HKLM, strKey64, 'Release')) then begin
      RegQueryDWordValue(HKLM, strKey64, 'Release', dwInstalled);
      if(dwInstalled >= 378675) then begin
        result := true;
      end;
    end;
  end
  else begin
    if (RegValueExists(HKLM, strKey86, 'Release')) then begin
      RegQueryDWordValue(HKLM, strKey86, 'Release', dwInstalled);
      if(dwInstalled >= 378675) then begin
        result := true;
      end;
    end;
  end;
end;

Вышеприведенный код был назван здесь:

function PrepareToInstall(var NeedsRestart: Boolean): String;
begin
  result := '';

  dotNetNeeded := not IsDotNetDetected();

  if(dotNetNeeded) then begin
    if (MsgBox(ExpandConstant('{cm:DotNet_NeedToDownload}'),
                      mbConfirmation, MB_OKCANCEL) = IDCANCEL) then begin
      result := ExpandConstant('{cm:DotNet_InstallAborted}');
      Abort();
    end;
  end;

  if (bDownloadHelpDocSetup) then
    DoDeleteFile(ExpandConstant('{app}\MeetSchedAssist.chm'));
end;

Я прочитал справку topi c и, похоже, я могу упростить этот код до :

function PrepareToInstall(var NeedsRestart: Boolean): String;
begin
  result := '';

  dotNetNeeded := not IsDotNetInstalled(net462, 0);

  if(dotNetNeeded) then begin
    if (MsgBox(ExpandConstant('{cm:DotNet_NeedToDownload}'),
                      mbConfirmation, MB_OKCANCEL) = IDCANCEL) then begin
      result := ExpandConstant('{cm:DotNet_InstallAborted}');
      Abort();
    end;
  end;

  if (bDownloadHelpDocSetup) then
    DoDeleteFile(ExpandConstant('{app}\MeetSchedAssist.chm'));
end;

Я заметил, что пример кода также использует это для форматирования сообщения об ошибке:

FmtMessage(SetupMessage(msgWinVersionTooLowError), ['.NET Framework', '4.6.2'])

Что здесь за параметр MinServicePack?

Спасибо за разъяснения.

1 Ответ

1 голос
/ 13 марта 2020

Я нашел ответ о MinServicePack здесь . В нем говорится:

// service -- Specify any non-negative integer for the required service pack level:
//    0               No service packs required
//    1, 2, etc.      Service pack 1, 2, etc. required
...