私は nsis インストーラーの初心者です。ユーザーの国を(IP経由で)検出し、国に応じていくつかのアクションを実行したいと考えています。nsis プラグイン ディレクトリを検索しましたが、IP を検出するプラグインしか見つかりませんでした。
nsis で ip 経由で国コードを取得するにはどうすればよいですか? ありがとうございました
私は nsis インストーラーの初心者です。ユーザーの国を(IP経由で)検出し、国に応じていくつかのアクションを実行したいと考えています。nsis プラグイン ディレクトリを検索しましたが、IP を検出するプラグインしか見つかりませんでした。
nsis で ip 経由で国コードを取得するにはどうすればよいですか? ありがとうございました
IPから国を検出するということは、次のものが必要であることを意味します。
ローカルマシンでWindows構成を使用しないのはなぜですか。
!include LogicLib.nsh
!define LOCALE_SCOUNTRY 6 ; Localized
!define LOCALE_SENGCOUNTRY 4098
!define LOCALE_SENGLANGUAGE 0x00001001
!define GEOCLASS_NATION 16
!define GEOID_NOT_AVAILABLE -1
!define GEO_ISO2 4
!define GEO_ISO3 5
Section
System::Call 'KERNEL32::GetUserDefaultLangID()i.r0'
DetailPrint LANGID=$0
System::Call 'KERNEL32::GetLocaleInfo(i$0,i${LOCALE_SENGCOUNTRY},t.r1,i1000)'
DetailPrint LOCALE_SENGCOUNTRY=$1
System::Call 'KERNEL32::GetLocaleInfo(i$0,i${LOCALE_SCOUNTRY},t.r1,i1000)'
DetailPrint LOCALE_SCOUNTRY=$1
System::Call 'KERNEL32::GetLocaleInfo(i$0,i${LOCALE_SENGLANGUAGE},t.r1,i1000)'
DetailPrint LOCALE_SENGLANGUAGE=$1
System::Call 'KERNEL32::GetUserGeoID(i${GEOCLASS_NATION})i.r0'
DetailPrint GEOID=$0
${If} $0 <> ${GEOID_NOT_AVAILABLE} ; Only available if the user has set a country/location
${AndIf} $0 != "error" ; GetUserGeoID is WinXP+
System::Call 'KERNEL32::GetGeoInfo(i$0,i${GEO_ISO2},t.r1,i1000,i0)'
DetailPrint GEO_ISO2=$1
System::Call 'KERNEL32::GetGeoInfo(i$0,i${GEO_ISO3},t.r1,i1000,i0)'
DetailPrint GEO_ISO3=$1
${EndIf}
SectionEnd