WiX: значение свойства потеряно между InstallUISequence и InstallExecuteSequence - PullRequest
6 голосов
/ 26 августа 2009

У меня проблема с моим WiX установщиком.

У меня есть настраиваемое диалоговое окно, которое содержит элемент управления для редактирования, связанный со свойством. Во время выполнения, если я изменяю значение в элементе управления редактирования, я вижу из журнала, что свойство правильно обновляется с этим новым значением. Но кажется, что, когда InstallUISequence заканчивается, свойство сбрасывается до значения по умолчанию, что раздражает, поскольку я не могу использовать введенное пользователем значение в части настраиваемого действия InstallExecuteSequence .

Вот выдержка из сценария WXS, который я использую:

<UI>
    <Dialog Id="select_list" Width="370" Height="270" Title="Select license and list files">
        <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="UIBannerBmp" />
        <Control Id="BannerLine" Type="Line" X="0" Y="45" Width="370" Height="0" />
        <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
        <Control Type="Edit" Id="list" Width="211" Height="15" X="128" Y="128" Property="pListFile" />
        <Control Type="Text" Id="static_list" Width="78" Height="17" X="41" Y="154" Text="list file" />
        <Control Type="PushButton" Id="next" Width="50" Height="17" X="232" Y="244" Text="Next &gt;">
            <Publish Event="EndDialog" Value="Return">1</Publish>
        </Control>
        <Control Type="PushButton" Id="cancel" Width="50" Height="17" X="296" Y="244" Text="Cancel">
            <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
        </Control>
        <Control Type="Text" Id="desc" Width="348" Height="16" X="8" Y="90"
                 Text="Please set the path of the the list file" />
    </Dialog>

    <InstallUISequence>
        <Show Dialog="select_list" After="WelcomeEulaDlg">NOT installed</Show>
    </InstallUISequence>
</UI>

<CustomAction Id="InstallService"
              ExeCommand="[bin]prog.exe -f install.cl '[pListFile]'"
              Execute="immediate"
              Return="check"
              Directory="bin" />

<InstallExecuteSequence>
    <Custom Action="InstallService" After="InstallFinalize">REMOVE=""</Custom>
</InstallExecuteSequence>

<CustomActionRef Id="InstallService" />
<Property Id="pListFile" Value="c:\" />

Я не должен быть на правильном пути для обмена информацией между двумя последовательностями.

Есть ли способ сделать это?

1 Ответ

15 голосов
/ 26 августа 2009

Необходимо пометить свойство «Безопасный», чтобы оно передавалось со стороны клиента (InstallUISequence) на сторону сервера (InstallExecuteSequence). Для этого вам необходимо сделать собственность «общедоступной» (ALL CAPS) и защищенной. Примерно так:

<Property Id="PLISTFILE" Secure="yes"/>

Вам не нужно присваивать ему значение, если вы не хотите, чтобы что-то отображалось в вашем пользовательском интерфейсе по умолчанию.

...