2016-09-29 11 views
2

私は特別な状況があります回避策を見つける必要があります。私は自分の32ビットアプリケーション用のwixインストーラを持っていますが、32/64ビットWindowsのバージョンにかかわらず、 "Program Files"フォルダの下の固定場所になければならないオフィスドキュメントファイルに依存しています。ちょっと待ってください。ちょうどその場所がXP日以来周りにあったアプリの下位互換性を保つために変更できないことを受け入れてください。私は "Program Files(x86)"フォルダに自分のアプリケーションをインストールし、 "Program Files"にある必要があるこのファイルを配布する必要があります。私は可能であれば、それらを2つのインストーラに分割したくありません。誰でもこの作業を行うための可能な方法を知っていますか?WIX 32ビットと64ビット両方のプログラムファイルフォルダにファイルをインストールします

答えて

0

"ProgramFiles64Folder"をディレクトリ定義に含めることができ、そのディレクトリを64ビットの場所に移動する必要があるコンポーネントのディレクトリとして使用できるはずです。

64ビットマシンの "C:\ Programs Files"に1つのコンポーネントがインストールされ、もう1つが "C:\ Programs Files"にインストールされる同じファイルを複製する2つのコンポーネントを含める必要があります。 32ビットマシンで実行します。

私はこのようないくつかのsnmp関連ファイルで何かします。私が何を意味するかの例:それは、32ビットまたは64ビットマシンであるかどうか:

<ComponentGroup Id="Files_32" Directory="OfficeProgramFilesFolder"> 
    <Component Id="SomeFile.dll_32" > 
     <Condition>NOT VersionNT64</Condition> 
     <File Id="SomeFile.dll_32" KeyPath="yes" Source="$(var.BinariesDir)\_bin\Win32\SomeFile.dll" /> 
    </Component> 
</ComponentGroup> 
<ComponentGroup Id="Files_64" Directory="OfficeProgramFiles64Folder"> 
    <Component Id="SomeFile.dll_64" Win64="yes"> 
     <Condition>VersionNT64</Condition> 
     <File Id="SomeFile.dll_64" KeyPath="yes" Source="$(var.BinariesDir)\_bin\x64\SomeFile.dll" /> 
    </Component> 
</ComponentGroup> 

これは「\プログラムファイルC」にファイルをインストールする必要があります。

ファイルが64ビットと32ビットのコンポーネント間でまったく同じだが相互に排他的であるため、大丈夫であるという警告が表示されます。

WIN64DUALFOLDERS:32ビットの場所へのリダイレクト32ビットMSIインストール結果から、64ビットのフォルダにインストールする

1

試みは、これはエントリのこの種のインストールのログに表示されます ' 「C:¥Program Files(x86)¥」は「C:¥Program Files¥Wi」の17文字に置き換えられます。

PROPERTY CHANGE:TARGETDIRプロパティの変更。現在の値は 'C:\ Program Files \ Wilson \ NewSetup'です。新しい値: 'C:\ Program Files(x86)\ Wilson \ NewSetup \'。

32ビットパッケージには32ビットコンポーネントしか含めることができません。ドキュメントには明示的に記載されています。

64ビットのProgram Filesの場所に1つのファイルを配信する必要がある場合、通常は、最初に実行したときにその場所にファイルをコピーするアプリケーションに何かを置くことです。 32ビットアプリケーションでは、Wow64DisableWow64FsRedirection()を呼び出すことによって、一時的にリダイレクトを無効にすることができます。

それはここに言うように、あなたはまだそれを見ていないした場合:

https://blogs.msdn.microsoft.com/heaths/2008/01/15/different-packages-are-required-for-different-processor-architectures/

および64ビットアプリ(つまり、32ビットコンポーネントをも含むことができますが)問題を解決するだろう、私はあなたはすでに知っていると思う。

関連する問題