Открытые свойства WIX, отображаемые в пользовательском интерфейсе - PullRequest
1 голос
/ 06 апреля 2011

У нас есть установщик, созданный с использованием WIX. В рамках этой установки мы хотели бы показать текущий выбранный путь установки. Я думал, что это будет намного проще, чем это, по-видимому. Я попытался использовать открытое свойство "INSTALLDIR" (я знаю, что мы не используем Installshield, это значение является идентификатором каталога.)

<Directory Id="INSTALLDIR" Name="AcmeInc">

Я также вижу, где устанавливается INSTALLDIR при запуске установки

MSI(EC:6C) Dir (target): Key: INSTALLDIR , Object: C:\Program Files\AcmeInc\

но когда я пытаюсь показать это в пользовательском интерфейсе, используя атрибут Text, я получаю «...\.», который даже не выглядит как относительный путь.

Я знаю, что должно быть что-то простое, что мне здесь не хватает.

1 Ответ

2 голосов
/ 07 апреля 2011

Предполагается, что вы используете WiX 3.5 и элемент MajorUpgrade - должно работать следующее (я обычно использую APPLICATIONFOLDER вместо INSTALLDIR - но они должны быть взаимозаменяемыми).

Сначала давайте установим ARPINSTALLOCATION, как описано в http://robmensching.com/blog/posts/2011/1/14/ARPINSTALLLOCATION-and-how-to-set-it-with-the-WiX-toolset

<SetProperty Id="ARPINSTALLLOCATION" Value="[INSTALLDIR]" After="CostFinalize" />

Теперь позволяет установить выбранную папку установки на предыдущую папку установки, если она существовала ранее.

<Property Id="INSTALLDIR" Secure="yes">
    <RegistrySearch Id="FindInstallLocation"
        Root="HKLM"
        Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[WIX_UPGRADE_DETECTED]"
        Name="InstallLocation"
        Type="raw"
        Win64="yes" />
</Property>

И во время последовательности пользовательского интерфейса мы хотим, чтобы это значение было установлено «рано»

<InstallUISequence>
    <AppSearch After="FindRelatedProducts"/>
</InstallUISequence>
...