[InnoSetup] C# WebView 브라우저 버전

[문제점]

폰갭으로 생성한 HTML 파일을 로딩하는 런처를 C#의 WebView Component를 이용하여 개발하였는데 실행 시에 JavaScript 오류가 발생되며 정상적인 동작이 안되는 문제가 발생됨.

[원인]

C#의 WebView는 실행 환경의 최신 IE브라우저를 사용하는 것이 아닌 내장된 브라우저를 사용하기 때문에 버전이 낮아 발생됨.

[해결]

레지스트리 위치

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION\

InnoSetup 을 이용한 인스톨 시점에 Registry 값을 추가해줌으로 문제를 해결 할 수 있음.

주의사항
Windows Vista 이후부터는 64Bit 운영체제의 경우 HKEY_LOCAL_MACHINE의 경로가 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ 로 변경됨.

스크립트

[Code]
function InitializeSetup(): Boolean;
var V:String;
var subkey:String;
var ieVersionValue:Cardinal;
begin
    // 현재 브라우저 버전을 조회한다. IE11: 11.0.9600.18015
    RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Internet Explorer', 'svcVersion', V);

    // 브라우저 버전의 두자리를 가져온다. 11 or 10
    v := Copy(V, 0, 2);      

    subkey := 'SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION';
    ieVersionValue := 11001;
    if v = '10' then
    begin
        ieVersionValue := 10001;
    end;

    // 레지스트리에 쓰고 저장한다.
    RegWriteDWordValue(HKLM, subkey, '{#MyAppExeName}', ieVersionValue);
    Result := True;    
end;

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s