2014-12-02 2 views
0

Я следующий Wix файл, который устанавливает файл в Program Files (x86) для 64-битной системы и Program Files в 32-битной системе. В программе мне нужно получить доступ к файлу lpa.config, который присутствует в папке Installed, которая может быть одной из двух выше. Для этого мне нужно написать папку Installed в Registry. Есть ли способ получить местоположение Установленная папка в Wix?Получить место установки в Wix и писать в реестре

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Product Id="*" Name="CustomWixInstallerWithCustomAction" Language="1033" Version="1.0.0.0" Manufacturer="LogPoint" UpgradeCode="ba9015b9-027f-4451-adb2-e38f9168a850"> 
     <Package InstallerVersion="200" Compressed="no" InstallScope="perMachine" /> 

     <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 
     <MediaTemplate /> 

     <Feature Id="ProductFeature" Title="CustomWixInstallerWithCustomAction" Level="1"> 
      <ComponentGroupRef Id="ProductComponents" /> 
     </Feature> 
    </Product> 

    <Fragment> 
     <Directory Id="TARGETDIR" Name="SourceDir"> 
      <Directory Id="ProgramFilesFolder"> 
       <Directory Id="INSTALLFOLDER" Name="CustomWixInstaller" /> 
      </Directory> 
     </Directory> 
    </Fragment> 

    <Fragment> 
     <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> 
     <Component Id="SomeRandomEXE"> 
     <File Source ="G:\SarVaGYa\myworkspace\LatestLpa\lpa\lpa_c\here\src\lpa\Release\lpa.exe" /> 
     </Component> 
     <Component Id="registry_values" Guid="{11FB6C4C-3C90-4F46-B0D2-BB95150F60E6}"> 
     <RegistryValue 
      KeyPath="yes" 
      Root="HKCU" 
      Key="Software\Logpoint" 
      Value="Here I need the path" 
      Type="string" /> 
     </Component> 
     </ComponentGroup> 
    </Fragment> 
</Wix> 

ответ

1

Да, начиная с WiX документации, например:

<DirectoryRef Id="TARGETDIR"> 
    <Component Id="RegistryEntries" Guid="PUT-GUID-HERE"> 
     <RegistryKey Root="HKCU" 
        Key="Software\Microsoft\MyApplicationName" 
       Action="createAndRemoveOnUninstall"> 
      <RegistryValue Type="string" Name="SetupPath" Value="PUT-PATH-HERE"/> 
     </RegistryKey> 
    </Component> 
</DirectoryRef> 

WiX основывается на ценностях установщика Windows и реестра являются Formatted properties, вы можете использовать знакомый синтаксис для свойств доступа:

<RegistryValue Type="string" Name="SetupPath" Value="[INSTALLFOLDER]"/> 

Название свойства соответствует вашему идентификатору элемента <Directory>, в вашем случае: <Directory Id="INSTALLFOLDER". Есть и другие способы сделать это, но ... ИМО это самый простой.

+0

Запись INSTALLLOCATION в реестре дает пустую строку. – Pant

+0

@SarvagyaPant Извините, вы используете INSTALLFOLDER. –

+0

Да INSTALLFOLDER решила проблему. Большое спасибо. – Pant

Смежные вопросы