2

回避策を見つける必要がある特別な状況があります。32 ビット アプリケーション用の wix インストーラーがありますが、32/64 ビットの Windows バージョンに関係なく、"Program Files" フォルダーの下の固定された場所に配置する必要がある Office ドキュメント ファイルに依存しています。XP の時代から存在するアプリの下位互換性を維持するために、その場所を変更できないことを少しの間受け入れてください。「Program Files (x86)」フォルダーにアプリをインストールし、「Program Files」に存在する必要があるこのファイルを配信する必要があります。可能であれば、それらを 2 つのインストーラーに分割したくありません。これを機能させる方法を知っている人はいますか?

4

2 に答える 2

1

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

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

私はいくつかのsnmp関連ファイルでこのようなことをします。私が意味することの例:

<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>

これにより、32 ビットまたは 64 ビットのマシンに関係なく、ファイルが「C:\Program Files」にインストールされます。

ファイルが 64 ビット コンポーネントと 32 ビット コンポーネントでまったく同じである場合、ICE 警告が表示されますが、これらは相互に排他的であるため問題ありません。

于 2016-09-29T21:12:02.177 に答える