0

こんにちは、WiXで生成されたMSIから新しいboostrapperを作成しようとしています。私は1つを行って、それは働いたが、今私はファイルのバージョンをチェックする別の場所を行う必要があります。Bootstrapperの場合、FileCheck要素がSystem32の64ビットOS上のファイルを見つけられません

MSDNによると、FileCheck要素を使用する必要があります。

<InstallChecks> 
    <FileCheck Property="VersionDll" FileName="cimwin32.dll" SearchPath="wbem" SpecialFolder="SystemFolder"/> 
    </InstallChecks> 

しかし、それは私のためには機能しません。

生成されるログは言う:

Running check with folder 'C:\Windows\System32\wbem' and file 'cimwin32.dll' 
Attempting to find file 'C:\Windows\System32\wbem\cimwin32.dll' 
Could not find file 'cimwin32.dll' in folder 'C:\Windows\System32\wbem' 
Not setting value for property 'VersionDll' 

は、ログファイルに記載されているパスが正しいですが!とても混乱するような。任意の助けを歓迎される

これは重要かどうか私は64のWindows 7 OSでこれを見ているかどうかはわかりません。ヘルプのオフに基づいて

UPDATE マイケルといくつかのテストから、これは64ビットマシン上のファイルのリダイレクトとブートストラップでFileCheckタグの問題です。アーキテクチャに関係なく、私はWindows/System32/wbem/cimwin32.dllをチェックする必要があります

+0

これは64ビットオペレーティングシステムで何らかの問題があるようです。 32ビットで正常に動作します。 私がチェックしたいファイルは64ビットOS上であっても、System32上にあるので、何をすべきかわかりません。ログは、私が望む場所を探していると言いますが、それを見つけることはできません。 非常に奇妙です。 – Ambro

+0

これが32ビットMSIの場合、System32というときはSysWow64を意味します。 –

+0

興味深い。 "System64Folder"と呼ばれる "SpecialPath"がありますか?私は "C:\ Windows \ System32 \ wbem"の絶対パスint SearchPathを入れてみて、同じ結果を得ました。 SysWow64を見ていても、System32を見たい場合でも、System32のリテラルを見せる方法はありますか? – Ambro

答えて

1

申し訳ありません。わかった。私とブレインストーミングをしてくれたMichael Urmanに感謝します。私は64ビットOS上でファイルリダイレクションについて考えました。

64ビットOS上で32ビットディレクトリへのアクセスを取得するためのブートストラップのためには、だから私はちょうど別のファイルのチェックを作成したのSystem32

More info

のエイリアスSysnativeを使用する必要があります。 1つは32で1つは64で、私は起きている。

<InstallChecks> 
    <FileCheck Property="VersionDll" FileName="cimwin32.dll" SearchPath="System32\wbem" SpecialFolder="WindowsFolder" /> 
    <FileCheck Property="VersionDll64bit" FileName="cimwin32.dll" SearchPath="Sysnative\wbem" SpecialFolder="WindowsFolder" /> 
</InstallChecks> 
関連する問題