您好我想要集成.NET Framework版本檢查並自動安裝在我的Inno安裝腳本中。InnoSetup:檢查.NET框架 - 安裝不工作
我使用的代碼,我發現這裏:.../installing-net-framework-4-5-automatically-with-inno-setup/`
的問題是,代碼是行不通的。該腳本編譯並輸出正常。
當我嘗試在VM中運行安裝程序時,一切正常。
但是,我沒有看到實際安裝的.NET Framework。
只需一個快速的10秒的進度窗口顯示正在提取的各種文件(如下所示)。
然後它消失,我的設置完成。
當我嘗試啓動我的程序時,它報告未安裝.NET Framework。
下面是完整的代碼:
#include <idp.iss>
function Framework45IsNotInstalled(): Boolean;
var
bSuccess: Boolean;
regVersion: Cardinal;
begin
Result := True;
bSuccess := RegQueryDWordValue(HKLM, 'Software\Microsoft\NET Framework Setup\NDP\v4\Full', 'Release', regVersion);
if (True = bSuccess) and (regVersion >= 378389) then begin
Result := False;
end;
end;
procedure InitializeWizard;
begin
if Framework45IsNotInstalled() then
begin
idpAddFile('http://go.microsoft.com/fwlink/?LinkId=397707', ExpandConstant('{tmp}\NetFrameworkInstaller.exe'));
idpDownloadAfter(wpReady);
end;
end;
procedure InstallFramework;
var
StatusText: string;
ResultCode: Integer;
begin
StatusText := WizardForm.StatusLabel.Caption;
WizardForm.StatusLabel.Caption := 'Installing .NET Framework 4.5.2. This might take a few minutes…';
WizardForm.ProgressGauge.Style := npbstMarquee;
try
if not Exec(ExpandConstant('{tmp}\NetFrameworkInstaller.exe'), '/passive /norestart','', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
begin
MsgBox('.NET installation failed with code: ' + IntToStr(ResultCode) + '.', mbError, MB_OK);
end;
finally
WizardForm.StatusLabel.Caption := StatusText;
WizardForm.ProgressGauge.Style := npbstNormal;
DeleteFile(ExpandConstant('{tmp}\NetFrameworkInstaller.exe'));
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
case CurStep of
ssPostInstall:
begin
if Framework45IsNotInstalled() then
begin
InstallFramework();
end;
end;
end;
end;
我試圖打破代碼,並試圖找到這個問題。不幸的是,我無法識別它。
任何幫助將不勝感激。謝謝!
那麼,如果手動運行「NetFrameworkInstaller.exe/passive/norestart」,會發生什麼呢?它是否正確安裝.NET框架? –
向我們顯示安裝程序日誌文件('NetFrameworkInstaller.exe/log c:\ path \ to \ log.log')! –
另請注意,您可以[將.NET框架安裝集成到您的安裝程序中](http://stackoverflow.com/q/39247947/850848)。 –