私はWiX 3.6を使用してインストーラを作成しています。インストーラからレジストリにインストール先を書き込む
ALLUSERSプロパティに応じて、インストール場所の場所をHKCUまたはHKLMのレジストリに書き込む必要があります。
は今、私は、次の問題はそれだけでALLUSERSは=「」、すなわちHKMUはHKCUと解釈されたときのために働くです
<RegistryKey Root="HKMU"
Key="Software\OpenCover"
Action="createAndRemoveOnUninstall">
<RegistryValue Name="Location"
Type="string"
Value="[APPLICATIONFOLDER]"
Action="write"
KeyPath="yes" />
</RegistryKey>
を動作するはずだと思う行っている調査に基づきます。
ALLUSERS = 1の場所でperMachineをインストールしようとすると、期待通りにエントリがHKLMに書き込まれません。ただし、インストーラのログファイルを見ると、WriteRegistryValuesが呼び出されます。
MSI (s) (D4:14) [22:46:24:901]: Executing op: ActionStart(Name=WriteRegistryValues,Description=Writing system registry values,Template=Key: [1], Name: [2], Value: [3])
Action 22:46:24: WriteRegistryValues. Writing system registry values
MSI (s) (D4:14) [22:46:24:902]: Executing op: ProgressTotal(Total=2,Type=1,ByteEquivalent=13200)
MSI (s) (D4:14) [22:46:24:903]: Executing op: RegOpenKey(Root=-1,Key=Software\OpenCover,,BinaryType=0,,)
MSI (s) (D4:14) [22:46:24:903]: Executing op: RegAddValue(Name=ConsoleLocation,Value=C:\Program Files (x86)\OpenCover\,)
WriteRegistryValues: Key: \Software\OpenCover, Name: ConsoleLocation, Value: C:\Program Files (x86)\OpenCover\
MSI (s) (D4:14) [22:46:24:906]: Executing op: RegCreateKey()
WriteRegistryValues: Key: \Software\OpenCover, Name: , Value:
誰かが私が
これは、32ビットプロセスが64ビットOSの仮想環境で動作するためです.WOW64(WindowsのWindows)。レジストリキーはリダイレクトされるだけでなく、プログラムファイルとシステムディレクトリです。したがって、32ビットプロセスは 'Program Files(x86) 'からファイルを読み込むことは実際にはわかりませんが、' Program Files'でも動作すると考えられます。インストーラはまた、これらのリダイレクションを受けます。 64ビットをインストールすると、64ビットのmsiexecが使用されます。 32ビットパッケージの場合、32ビットのmsiexecが使用されます。 –