如何使用 Inno Setup 检查 Internet 连接
How to check Internet connection using Inno Setup
我正在学习 Inno Setup 以制作一个简单的安装程序。我需要在安装过程中从网站下载文件,所以检查是否有 Internet 连接很重要。如何在安装过程中检查或提醒连接互联网?
谢谢!
最好的检查方法是尝试实际下载文件。
"Internet" 几乎不是您可以连接到的真实事物。所以很难测试,如果你连接到 "Internet"。您实际上不需要连接到 "Internet",您需要连接到您的服务器。所以测试一下。
另见
- How to check if internet connection is present in java?
- What is the best way to check for Internet connectivity using .NET?
Inno Setup 中的等效实现如下:
function InitializeSetup(): Boolean;
var
WinHttpReq: Variant;
Connected: Boolean;
begin
Connected := False;
repeat
Log('Checking connection to the server');
try
WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1');
{ Use your real server host name }
WinHttpReq.Open('GET', 'https://www.example.com/', False);
WinHttpReq.Send('');
Log('Connected to the server; status: ' + IntToStr(WinHttpReq.Status) + ' ' +
WinHttpReq.StatusText);
Connected := True;
except
Log('Error connecting to the server: ' + GetExceptionMessage);
if WizardSilent then
begin
Log('Connection to the server is not available, aborting silent installation');
Result := False;
Exit;
end
else
if MsgBox('Cannot reach server. Please check your Internet connection.',
mbError, MB_RETRYCANCEL) = IDRETRY then
begin
Log('Retrying');
end
else
begin
Log('Aborting');
Result := False;
Exit;
end;
end;
until Connected;
Result := True;
end;
我正在学习 Inno Setup 以制作一个简单的安装程序。我需要在安装过程中从网站下载文件,所以检查是否有 Internet 连接很重要。如何在安装过程中检查或提醒连接互联网?
谢谢!
最好的检查方法是尝试实际下载文件。
"Internet" 几乎不是您可以连接到的真实事物。所以很难测试,如果你连接到 "Internet"。您实际上不需要连接到 "Internet",您需要连接到您的服务器。所以测试一下。
另见
- How to check if internet connection is present in java?
- What is the best way to check for Internet connectivity using .NET?
Inno Setup 中的等效实现如下:
function InitializeSetup(): Boolean;
var
WinHttpReq: Variant;
Connected: Boolean;
begin
Connected := False;
repeat
Log('Checking connection to the server');
try
WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1');
{ Use your real server host name }
WinHttpReq.Open('GET', 'https://www.example.com/', False);
WinHttpReq.Send('');
Log('Connected to the server; status: ' + IntToStr(WinHttpReq.Status) + ' ' +
WinHttpReq.StatusText);
Connected := True;
except
Log('Error connecting to the server: ' + GetExceptionMessage);
if WizardSilent then
begin
Log('Connection to the server is not available, aborting silent installation');
Result := False;
Exit;
end
else
if MsgBox('Cannot reach server. Please check your Internet connection.',
mbError, MB_RETRYCANCEL) = IDRETRY then
begin
Log('Retrying');
end
else
begin
Log('Aborting');
Result := False;
Exit;
end;
end;
until Connected;
Result := True;
end;