Общедоступные свойства WIX, отображаемые в пользовательском интерфейсе

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

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

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

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

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

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


person Randolph    schedule 06.04.2011    source источник
comment
Вы используете пользовательский интерфейс или один из интерфейсов Wix?   -  person colin.t.welch    schedule 06.04.2011
comment
Есть ли запись, что INSTALLDIR меняет свое значение?   -  person Alexey Ivanov    schedule 06.04.2011
comment
@Alexy: Когда вы спрашиваете, есть ли какая-либо запись, INSTALLDIR меняет свое значение. Если вы имеете в виду во время установки, то да. Я вижу это в журнале в любое время, когда меняю значение.   -  person Randolph    schedule 06.04.2011
comment
Есть ли в журнале вторая запись, в которой изменяется значение INSTALLDIR?   -  person Alexey Ivanov    schedule 06.04.2011


Ответы (1)


Предполагая, что вы используете 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>
person saschabeaumont    schedule 07.04.2011
comment
Извините за задержку. Спасибо за ваш ответ, After=CostFinalize был ключом. :) - person Randolph; 07.05.2011