Как установить в качестве места установки по умолчанию для пакета WIX строку реестра, если она существует? - PullRequest
0 голосов
/ 23 января 2019

У меня есть пакет WIX, который в настоящее время позволяет пользователю изменять каталог установки по умолчанию.Я хотел бы изменить каталог установки по умолчанию, прежде чем пользователь получит к нему доступ к строке из реестра, если она там существует.

Желаемая логика:

1. Set default directory (currently using '<Variable Name="InstallFolder"
     Type="string" Value="C:\Users\Public"/>')
2. Get string from registry entry (currently using '<util:RegistrySearch
     Id="InstallLocSearch" Variable="PrevInstallFolder" Root="HKLM"
     Key="SOFTWARE\Company\App\InstallDir" Result="value"/>')
3. If the registry entry contains a non-empty string, override InstallFolder
     with string, leave it alone otherwise (not sure what to do here)
4. Allow user to change install dir if desired (done in UI)

Что бы я хотелdo - использовать другой элемент Variable для назначения переменной PrevInstallFolder для InstallFolder после поиска в реестре.Но как мне убедиться, что эта переменная будет назначена после поиска в реестре?Кроме того, как я могу назначить его, только если строка реестра не пуста?

Есть еще одна похожая запись переполнения стека, такого рода адреса, которые я хочу.Разница в том, что он проверяет, существует ли каталог.Меня это не волнует, поэтому решение на самом деле не применимо.

1 Ответ

0 голосов
/ 25 января 2019

Вы можете закодировать эту логику в настраиваемом действии C #.

В функции вы можете установить для свойства вашей папки установки любое значение:

Session["INSTALLFOLDER"] = "C:\Yourdir\etc"

Затем использовать то же свойствоимя во фрагменте определения Справочника.

    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="DesktopFolder" Name="Desktop"/>

      <Directory Id="Websites" Name ="Websites">
        <Directory Id="INSTALLFOLDER" Name="It'll be as set in the CA">
          <Directory Id="SUB_DIR" Name="sub_dir">   </Directory>

Запланируйте запуск своего ЦС до CostFinalize.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...