2016-03-24 47 views
1

我正在嘗試爲我的軟件使用Inno Setup。目前,我的軟件每天從不同的Geo獲得6000多次下載。問題是我的軟件對每個地理位置的表現都不同,所以我爲每個地理位置創建了不同的exe。目前,我正在使用Inno Setup作爲我的軟件的下載管理器。現在怎麼能找到用戶來自哪個地理區域,以及如何告訴我的Inno Setup腳本下載exe文件,用戶來自哪裏。Inno Setup中的國家/地區下載

目前我現在有:

#define MyAppName "" 
#define MyAppVersion "1" 
#define _URL "" 
#define _exeFileName "setup.exe" 
#include ReadReg(HKEY_LOCAL_MACHINE,'Software\Sherlock Software\InnoTools\Downloader','ScriptPath',''); 
[Setup] 
AppId={{7B0D8E4E-BAFD-400B-B775-0DD7D8FBAE08} 
AppName={#MyAppName} 
AppVersion={#MyAppVersion}; 
AppVerName={#MyAppName} {#MyAppVersion} 
DefaultGroupName={#MyAppName} 
DisableProgramGroupPage=yes 
DisableFinishedPage=yes 
OutputBaseFilename={#MyAppName}{#MyAppVersion} 
Compression=lzma 
SolidCompression=yes 
DisableWelcomePage=yes 
DisableReadyPage=yes 
DisableReadyMemo=True 
Uninstallable=no 
RestartIfNeededByRun=no      
CreateAppDir=False 
UsePreviousGroup=False 

如果有人能幫助我這將是巨大的。

在此先感謝

+0

這是一個相當廣泛的問題。你在這裏實際上有兩個問題。首先是如何找到用戶所在的國家。第二是如何在Inno Setup中使用這些信息。單獨提出這些問題。 –

+0

感謝您對我的問題的即時回覆,我真的很感謝您爲您的專家邊界上的每個用戶提出的寶貴時間... –

+0

@MartinPrikryl如果您可以教我或指導我如何可以真的很開心使用地理位置或用戶的IP地址(準確的位置)找到Inno設置中的用戶位置,請幫助我如何做到這一點 注意:我的一個朋友使用http發送請求,但他不願意分享它 預先感謝您 –

回答

0

我不知道什麼是解決位置的最佳方法。這是一個單獨的問題。

但是你可以使用一些在線服務。

例如,https://ipinfo.io/country

它返回一個兩位數ICO國家代碼。

您可以使用WinHttpRequest來閱讀代碼。見How to read a text file from the Internet resource?


下面的示例演示如何結合,與創新科技下載插件:

var 
    Country: string; 

function GetCountry: string; 
var 
    WinHttpReq: Variant; 
begin 
    if Country <> '' then 
    begin 
    Log(Format('Using cached country: %s', [Country])); 
    Result := Country; 
    end 
    else 
    begin 
    try 
     WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1'); 
     WinHttpReq.Open('GET', 'https://ipinfo.io/country', False); 
     WinHttpReq.Send; 
     Result := Trim(WinHttpReq.ResponseText); 
    except 
     Log(GetExceptionMessage); 
     Result := 'XX'; 
    end; 

    Country := Result; 
    Log(Format('Resolved country: %s', [Country])); 
    end; 
end; 

function InitializeSetup(): Boolean; 
begin 
    idpAddFile(
    'https://example.com/file-for-' + GetCountry + '.exe', 
    ExpandConstant('{tmp}\file.exe')); 
end; 

順便說一句,你有沒有考慮解決在下載的時候網站上的地理位置?並讓用戶直接下載特定於他/她的位置的安裝程序?

+0

非常感謝你,它的作品非常棒,我確實試圖做到這一點,但這似乎比這更容易,我也可以學習inno的新技巧。 –

+0

不客氣。雖然在StackOverflow我們[感謝接受答案](http://stackoverflow.com/help/someone-answers)。 –

+0

我的回答有幫助嗎? –