2016-03-24 12 views
1

私のソフトウェアにInno Setupを使用しようとしています。現在、私のソフトウェアは、毎日6000件以上のダウンロードをGeoから取得しています。問題は、私のソフトウェアがそれぞれのジオで異なる動作をするので、私は各ジオごとに異なる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

これはかなり広い質問です。実際にはここに2つの質問があります。 1つは、ユーザーがいる国を見つける方法です。もう1つはInno Setupでその情報を使用する方法です。これらの質問は別途お願いします。 –

+0

私の質問であなたの即刻の返信をありがとう、私は本当にあなたの専門家の境界にすべてのユーザーの質問のあなたの貴重な時間を与えることに感謝しています... –

+0

@MartinPrikrylは私に教えるか、ジオロケーションまたはIPアドレス(正確な場所)を使用してInnoセットアップでユーザーの場所を探します。 メモ:私の友人の1人がHTTPリクエストを送信していますが、彼は共有していませんit ありがとうございました –

答えて

0

私は場所を解決する最良の方法がわかりません。これは別の質問です。

ただし、オンラインサービスをご利用いただけます。例えば

https://ipinfo.io/country

これは2桁ICO国コードを返します。

WinHttpRequestを使用してコードを読み取ることができます。

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; 

ところで、あなたは、ダウンロード時に、サイト上のジオロケーションを解決検討しました:?How to read a text file from the Internet resource?


次の例では、革新とプラグインをダウンロードすることを結合する方法を示しています参照してください。また、ユーザが自分の場所に固有のインストーラを直接ダウンロードさせることができますか?

+0

本当にありがとう、その作品は素晴らしいと私はそれをしようとしましたが、これはまた、私はinnoで新しいトリックを学ぶことができるよりも簡単だと思われる。 –

+0

あなたは大歓迎です。 StackOverflowで我々は[答えを受け入れることで感謝](http://stackoverflow.com/help/someone-answers)。 –

+0

私の回答は役に立ちましたか? –

関連する問題