2016-10-18 3 views
2

WebBrowser 컨트롤에 대해서는 enable IE feature이 필요합니다. IE11을 에뮬레이트하려면 레지스트리 키에 값을 써야합니다.키에 공백이 포함되어 있으면 WIX에서 값을 레지스트리에 쓸 수 없습니다.

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION 

이 조작은 설치 중에 수행해야합니다. 다음 WIX 스크립트에 내 코드는 다음과 같습니다

<?define var.IEFeatureEmulationKey = "Software\Microsoft\Internet Explorer\FeatureControl\FEATURE_BROWSER_EMULATION" ?> 
.... 
<Fragment>    
    <DirectoryRef Id="TARGETDIR">    
    <Component Id="registryValues" Guid="{some-guid}" > 
     <RegistryKey Root="HKCU" Key="$(var.IEFeatureEmulationKey)" Action="create"> 
     <RegistryValue Name="MyApp.EXE" Value="11000" Type="integer" Action="write"/> 
     </RegistryKey> 
    </Component> 
</Fragment>  

$ (var.IEFeatureEmulationKey)에 공백이없는 경우에만이 코드가 작동. 하지만이 특정 키에 값을 써야합니다.

레지스트리 키에도 공백이 있으면 레지스트리에 값을 쓰도록 WiX에 알려주는 방법을 알려주십시오.

UPD : 추가 윅스 저장소

+0

는' 를 사용하여 whitespacecharacter을 탈출 시도 되세요 ' – nozzleman

+0

이것은 내가 공간을 벗어난 후 내 레지스트리를 얻은 것입니다 - http://prntscr.com/cvs25g – Valentine

+0

괜찮아요.;) – nozzleman

답변

-1

그래도 문제를 해결할 수는 없지만 해결 방법을 제시하고자합니다.

나는 WiX에서 허용되는 사용자 지정 작업을 사용했습니다. 우선 내가 (.wxs) 그 다음이 방법은 윅스 설정 파일에서 참조해야

[CustomAction] 
public static ActionResult SetRegistryItems(Session session) 
{ 
    session.Log("Begin SetRegistryItems"); 

    try 
    { 
     // this private method actually does manipulation with registry 
     SetRegistry(); 
    } 
    catch (Exception e) 
    { 
     session.Log(e.ToString()); 
    } 

    return ActionResult.Success; 
} 

내에서 다음과 같은 방법으로 사용자 정의 .NET 어셈블리를 추가

<Fragment>  
    ... 
    <CustomAction Id='SetRegistryItems' BinaryKey='<NameOfTheAssemblyWithoutExtension>' DllEntry='SetRegistryItems' Execute='immediate'/> 
    ... 
    <InstallExecuteSequence> 
    ... 
    <Custom Action="SetRegistryItems" Before="LaunchConditions"/> 
    ... 
    </InstallExecuteSequence> 
    ... 
</Fragment> 
0

This Blogpostissue 적절한는 나도 전에 보지 못한 특별한 구문을 사용합니다. 이 변수는 공백 문자과 같이 포함되어있는 경우에도이 방법을 정의 할 수 있다고 :

<!–?define var.IEFeatureEmulationKey = "Software\Microsoft\Internet Explorer\FeatureControl\FEATURE_BROWSER_EMULATION" ?> 

!- 옆하자, 당신이 무엇을 가지고 아주 비슷합니다. 그러나 값에 공백이 둘 이상 포함되어 있습니다. 확실하게 공백을 가리키고 있는지, 아니면 공백을 분명하게 가리키고 있는지 확실하지 않은 경우 ...

+0

도움이되는지 확실하지 않습니다. 첫째,이 구문은 Visual Studio에서 빨간색 선으로 시작 태그에 밑줄을 긋게합니다. 둘째 - 이것은 변수의 값을 변경하지 않은 것처럼 보입니다. WiX는 이름에 공백이있는 디렉토리에 도달하려고 할 때 cmd 쉘처럼 작동합니다. cmd에서이 문제를 극복하기 위해 일반적으로 인용 부호 (예 : "dir name")를 사용했습니다. WiX 스크립트에 비슷한 구문이 있습니까? – Valentine

+0

"그러나 값에 공백이 두 개 이상 있습니다." SO 편집기에서 서식을 지정하기 때문에 코드에 한 개의 공백이 있습니다. – Valentine

+0

cmd-params로 전처리 기 varialbes를 전달할 수 있다는 것을 알고 있습니다. 영구히 설정할 수도 있습니다 VS (프로젝트 설정). 어쩌면이 해결 방법이 될 수도 있습니다 ... 나는 또한 어떤 사람들은 이런 종류의 문제에 문제가 있었고 전체 cmd-param을 따옴표로 묶었습니다. – nozzleman