Я использую WiX 3.6 для создания установщика.
Одна из потребностей заключается в том, чтобы записать расположение места установки в реестр в HKCU или HKLM в зависимости от ALLUSERS.свойство.
Теперь, основываясь на исследовании, которое я провел, я думаю, что следующее должно работать
<RegistryKey Root="HKMU"
Key="Software\OpenCover"
Action="createAndRemoveOnUninstall">
<RegistryValue Name="Location"
Type="string"
Value="[APPLICATIONFOLDER]"
Action="write"
KeyPath="yes" />
</RegistryKey>
Проблема в том, что это работает только тогда, когда ALLUSERS = "", т.е. HKMU интерпретируетсякак HKCU.
Если я попытаюсь установить perMachine, где ALLUSERS = 1, то запись не будет записана в 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:
Может кто-нибудь объяснить, как выполнить задачу, которую мне нужно выполнить