Wix: Как добавить кнопку обзора в Wix - PullRequest
4 голосов
/ 08 августа 2011

Есть ли простой способ добавить кнопку обзора в Wix.Я создал пользовательский, изменив из WixUI_InstallDir.wxs.Эта кнопка обзора находится в другом диалоговом окне (не то же самое, что и для поиска пути установки).Эта кнопка обзора будет использоваться для указания пути для размещения моих файлов журнала, которые будут созданы во время установки.

РЕДАКТИРОВАТЬ:

извините за путаницу в "код ниже».Сначала я намеревался показать коды, но место на ответе выше было ограничено.Здесь я добавил коды.Теперь мне удается показать диалоговое окно «Обзор», но мне нужно иметь возможность изменить путь, чтобы он не совпадал с путем диалога «Просмотр» пути установки, который является _BrowseProperty.Мой код ниже использует _LogBrowseProperty, но я не уверен, как правильно определить его и где я должен его определить.Использование кода ниже приведет к ошибке 2819.Можете ли вы помочь взглянуть на то, что здесь не так?Большое спасибо.

CUSTOMDIR определен в Product.wxs

 <Property Id='CUSTOMDIR' Value="TARGETDIR"></Property>

Ниже находится в MyWixUI_InstallDir.wxs

   <Control Id="LogFolderLabel" Type="Text" X="20" Y="160" Width="290" Height="30" NoPrefix="yes"
                     Text="Folder Label" />
            <Control Id="LogFolder" Type="PathEdit" X="20" Y="200" Width="320" Height="18" Property="CUSTOMDIR"
                     Indirect="yes" />
            <Control Id="ChangeFolder" Type="PushButton" X="20" Y="220" Width="56" Height="17"
                     Text="Change Folder" />

....

  <Publish Dialog="myDlg" Control="ChangeFolder" Property="_LogBrowseProperty" Value="[CUSTOMDIR]" Order="1">1</Publish>
  <Publish Dialog="myDlg" Control="ChangeFolder" Event="SpawnDialog" Value="BrowseDlg" Order="2">1</Publish>


  <Property Id="_LogBrowseProperty" Value="TARGETDIR" />

Ответы [ 2 ]

3 голосов
/ 12 августа 2011

Я некоторое время пытался сделать то же самое и исправлял диалог Wix BroseDlg, чтобы добиться этого.

В родительском элементе управления были следующие элементы редактирования пути и кнопки:

<Control Id="LogFilePathValue" Type="PathEdit" X="50" Y="205" Width="215" Height="18" Property="LOGFILE_PATH"/>
    <Control Id="LogFilePathButton" Type="PushButton" X="270" Y="205" Width="50" Height="17" Text="!(loc.LogFilePathButton_Text)">
      <Publish Property="LOGFILE_PATH_TEMP" Value="[LOGFILE_PATH]" Order="1">1</Publish>
      <Publish Event="SpawnDialog" Value="MyLogFileDialog" Order="2">1</Publish>
    </Control>
</Control>

Затем MyLogFileDialog выглядело так:

<Dialog Id="MyLogFileDialog" Width="370" Height="270" Title="!(loc.MyLogFileDialog_DialogTitle)">
    <Control Id="PathEdit" Type="PathEdit" X="25" Y="202" Width="320" Height="18" Property="LOGFILE_PATH_TEMP" />
    <Control Id="OK" Type="PushButton" X="240" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUIOK)">
      <Publish Property="LOGFILE_PATH" Value="[LOGFILE_PATH_TEMP]" Order="1">1</Publish>
      <Publish Event="EndDialog" Value="Return" Order="2">1</Publish>
    </Control>
    <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)">
      <Publish Event="EndDialog" Value="Return">1</Publish>
    </Control>
    <Control Id="ComboLabel" Type="Text" X="25" Y="58" Width="44" Height="10" TabSkip="no" Text="!(loc.BrowseDlgComboLabel)" />
    <Control Id="DirectoryCombo" Type="DirectoryCombo" X="70" Y="55" Width="220" Height="80" Property="LOGFILE_PATH_TEMP" Fixed="yes" Remote="yes">
      <Subscribe Event="IgnoreChange" Attribute="IgnoreChange" />
    </Control>
    <Control Id="WixUI_Bmp_Up" Type="PushButton" X="298" Y="55" Width="19" Height="19" ToolTip="!(loc.BrowseDlgWixUI_Bmp_UpTooltip)" Icon="yes" FixedSize="yes" IconSize="16" Text="!(loc.BrowseDlgWixUI_Bmp_Up)">
      <Publish Event="DirectoryListUp" Value="0">1</Publish>
    </Control>
    <Control Id="NewFolder" Type="PushButton" X="325" Y="55" Width="19" Height="19" ToolTip="!(loc.BrowseDlgNewFolderTooltip)" Icon="yes" FixedSize="yes" IconSize="16" Text="!(loc.BrowseDlgNewFolder)">
      <Publish Event="DirectoryListNew" Value="0">1</Publish>
    </Control>
    <Control Id="DirectoryList" Type="DirectoryList" X="25" Y="83" Width="320" Height="98" Property="LOGFILE_PATH_TEMP" Sunken="yes" TabSkip="no" />
    <Control Id="PathLabel" Type="Text" X="25" Y="190" Width="320" Height="10" TabSkip="no" Text="!(loc.BrowseDlgPathLabel)" />
    <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="!(loc.BrowseDlgBannerBitmap)" />
    <Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0" />
    <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
    <Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Transparent="yes" NoPrefix="yes" Text="!(loc.MyLogFileDialog_TitleBody)" />
    <Control Id="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Transparent="yes" NoPrefix="yes" Text="!(loc.MyLogFileDialog_TitleMain)" />
  </Dialog>

Перед вызовом этой родительской формы вам необходимо убедиться, что свойство LOGFILE_PATH установлено.В моем случае я использую свою собственную версию UI_Mondo, поэтому я устанавливаю свойство после того, как пользователь выбрал тип установки:

  <Publish Dialog="SetupTypeDlg" Control="TypicalButton" Property="LOGFILE_PATH" Value="[COMPONENTINSTALLFOLDER]\Logs" Order="1">1</Publish>
  <Publish Dialog="SetupTypeDlg" Control="TypicalButton" Event="NewDialog" Value="ParentDialogWithLogLocationControls" Order="2">1</Publish>
1 голос
/ 08 августа 2011

Попробуйте изучить WiXUIExtension, особенно WixUI_InstallDir.wxs и InstallDirDlg.wxs. Посмотрите, как настроены элементы управления и диалоговые окна для правильной работы с каталогами, и попробуйте настроить его в соответствии с вашими потребностями.

Из InstallDirDlg.wxs:

<Control Id="Folder" Type="PathEdit" X="20" Y="100" Width="320" Height="18" Property="WIXUI_INSTALLDIR" Indirect="yes" />
<Control Id="ChangeFolder" Type="PushButton" X="20" Y="120" Width="56" Height="17" Text="!(loc.InstallDirDlgChange)" />

Из WixUI_InstallDir.wxs:

<Publish Dialog="InstallDirDlg" Control="Next" Event="SetTargetPath" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish>
...
<Publish Dialog="InstallDirDlg" Control="ChangeFolder" Property="_BrowseProperty" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish>
<Publish Dialog="InstallDirDlg" Control="ChangeFolder" Event="SpawnDialog" Value="BrowseDlg" Order="2">1</Publish>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...