Я пытаюсь создать установщик WiX для подключаемого модуля одного из моих приложений, но обнаружил что-то странное; возможно, это ожидаемое поведение, но тогда я хотел бы знать, почему.
Мое приложение сохраняет путь установки в следующем месте реестра:
HKEY_CURRENT_USER \ SOFTWARE \ MyCompany \ MyApp \ Установлено
По умолчанию мое приложение установлено в C: \ Program Files \ MyApp, если x64 и C: \ Program Files (x86) \ MyApp, если x86.
В моем установщике плагинов в Product.wxs есть следующее, чтобы получить путь установки моего приложения:
<Property Id="MY_APP_DIR">
<RegistrySearch Id='my_app_dir' Type='raw' Root='HKCU' Key='SOFTWARE\MyCompany\MyApp' Name='Installed' />
</Property>
Затем я добавил следующее, чтобы увидеть, что на самом деле получается при запуске установщика:
<Condition Message="[MY_APP_DIR]">
0
</Condition>
В случае, когда "C: \ Program Files \ MyApp \" хранится в реестре, я получил следующее при запуске установщика плагина:
Установщик плагина (x86): C: \ Program Files (x86) \ MyApp \
Установщик плагина (x64): C: \ Program Files \ MyApp \
Почему значение, хранящееся в реестре, не извлекается независимо от того, для какой платформы был создан msi?
На машине x64 будут использоваться только x64 версии моих установщиков, так что это не должно вызывать никаких проблем, это меня просто сбивает с толку.
РЕДАКТИРОВАТЬ: По запросу я включил весь свой Product.wxs:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="TestInstaller" Language="1033" Version="1.0.0.0" Manufacturer="MyCompany" UpgradeCode="SOME_GUID">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate EmbedCab="yes" />
<Property Id="MY_APP_DIR">
<RegistrySearch Id="my_app_dir" Root="HKCU" Key="SOFTWARE\MyCompany\MyApp" Name="Installed" Type="raw" />
</Property>
<Condition Message="[MY_APP_DIR]">
0
</Condition>
<Feature Id="ProductFeature" Title="TestInstaller" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="INSTALLFOLDER" Name="TestInstaller">
<Directory Id="MY_APP_DIR" Name="MyAppInstallPath">
<Directory Id="MyAppBinFolder" Name="bin" />
</Directory>
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents">
<Component Id="ProductComponent" Guid="SOME_GUID" Directory="MyAppBinFolder">
<File Id="Foo.Bar" Source="Foo.Bar" KeyPath="yes" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>