2016-10-18 8 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: WiXのリポジトリに追加された適切なissue

+0

あなたは ' を使用してwhitespacecharacterを脱出しようとしたことがあり、このメソッドは、WiXの設定ファイルで参照する必要があります

[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アセンブリを追加しました' – nozzleman

+0

これは、私がスペースをエスケープした後、私のレジストリを取得するものです - http://prntscr.com/cvs25g – Valentine

+0

大丈夫、スクラッチ;) – nozzleman

答えて

-1

まだ解決できないけれど、私は助けになる回避策を示したいと思います。

私はWiXで許可されているカスタムアクションを使用しました。まず第一に、私は(.wxs)

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

This Blogpostは、私はどちらかの前に見ていないいくつかの特別な構文を使用しています。これは、変数はこのように定義することができることを述べて、それはそうのような空白文字が含まれていても:

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

!-はさておきましょう、それはあなたが得たものと非常によく似ています。しかし、あなたの価値には複数の空白が含まれています。あなたが本当に必要とする価値があるかどうか、または空白を明示的に指し示すだけだったのかどうかはわかりません...

+0

役立つかどうかわかりません。まず、この構文は、Visual Studioに赤い線で開始タグに下線を引くようにします。第二に、これは変数の値の変化のようには見えません。 名前にスペースが含まれているディレクトリにアクセスしようとすると、WiXはcmdシェルのように動作します。 cmdでこの問題を解決するには、通常は引用符(たとえば "dir name")を使用します。 WiXスクリプトにも同様の構文がありますか? – Valentine

+0

"しかし、あなたの値には複数の空白が含まれています" これはSOエディタで書式設定されているためにコード内にスペースが1つしかありません – Valentine

+0

cmd-paramsによってプリプロセッサの変数を渡すことができますVSで(プロジェクト設定)。おそらくこれは回避策かもしれません...私はまた、一部の人々がこの種の問題に問題を抱えており、cmd-param全体を引用符で包んだことを読んでいます.... – nozzleman

関連する問題