[문제점]
폰갭으로 생성한 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;