我想给一些用户免费的软件副本,但我想防止Inno Setup安装程序也在其他计算机上运行。所以我希望安装程序在一台计算机上只运行一次,然后再也不会运行了。
制作一个在线服务,安装程序将检查该服务以确定是否允许安装。服务部门应统计安装情况并作出相应响应。
function InitializeSetup(): Boolean;
var
WinHttpReq: Variant;
begin
Result := False;
Log('Checking installation online...');
try
WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1');
WinHttpReq.Open('GET', 'https://www.example.com/install_check.php', false);
WinHttpReq.Send();
if WinHttpReq.Status = 200 then
begin
Log('Installation was allowed...');
Result := True;
end
else
begin
Log(Format('Installation was not allowed with %d: %s...', [
WinHttpReq.Status, WinHttpReq.StatusText]));
MsgBox('Installation is not allowed.', mbError, MB_OK);
end;
except
Log(Format('Installation check failed: %s', [GetExceptionMessage]));
MsgBox('Error checking if the installation is allowed.', mbError, MB_OK);
end;
end;
一个琐碎的服务器端验证PHP脚本(install_check.php
(如下:
<?
$flag_file = "/data/install_check";
if (file_exists($flag_file))
{
$msg = "This installer was already installed";
header("HTTP/1.0 401 $msg");
echo $msg;
}
else
{
echo "Can install";
touch($flag_file);
}
相关问题:
Inno设置-如何在线验证序列号
尽管从Inno Setup安装程序中提取文件很容易。您可以通过加密安装并从在线服务中检索解密密码来改进这一点。
如果不返回密码,您将有效地阻止安装。
请参阅从互联网读取Inno设置加密密钥,而不是密码框