2016-11-30 1 views
0

У кого-нибудь возникли проблемы с панелью «Обзор папок» под кнопкой «Option» в комплекте с носителем «BA»?Почему место установки не может быть выбрано на панели «Обзор» в «Запись»?

У меня есть поле «Редактировать», в котором указывается место установки. Он установлен в положение по умолчанию. Нажатие кнопки «Обзор» запускает список каталогов («Обзор для папки») для выбора другого места установки. Однако, независимо от того, что было выбрано, оно не заполняется в поле «Редактировать», поэтому путь остается по умолчанию, независимо от того, что выбирают пользователи. Путь в поле «Редактировать» можно вручную изменить (ввести), но не через «Обзор».

Я бы хотел, чтобы это работало, потому что это единственное место, где пользователи могут указывать место установки (я отключил интерфейс MSI). Если возможно, я надеюсь, что это будет сделано через родной BA.

Есть ли какие-то теги WiX, которые я должен применять для получения этой работы? Что мне не хватает? Любая помощь приветствуется.

Вот код, который, на мой взгляд, имеет отношение к этой проблеме.

Внутри Bundle

<Variable Name="INSTALLLOC" Type="string" Value="[ProgramFiles6432Folder]" 
    bal:Overridable="yes" /> 
<util:DirectorySearch 
    Variable="INSTALLLOC" 
    Path="[ProgramFiles6432Folder]" /> 

Также под Chain

<MsiPackage SourceFile="$(var.SoftwareMsi)" 
    Vital="yes" Visible="yes" DisplayInternalUI="no" > 
    <MsiProperty Name="PRODUCTDIR" Value="[INSTALLLOC]" /> 
</MsiPackage> 

Также для моего шаблона темы

<Page Name="Options"> 
    <Text X="175" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">Destination folder</Text> 
    <Text X="175" Y="121" Width="-11" Height="17" FontId="0" DisablePrefix="yes">Select a folder where the application will be installed.</Text> 
    <Editbox Name="INSTALLLOC" X="175" Y="143" Width="-91" Height="21" TabStop="yes" FontId="0" FileSystemAutoComplete="yes"/> 
    <Button Name="BrowseButton" X="-11" Y="142" Width="75" Height="23" TabStop="yes" FontId="0"> 
    <Text>Browse</Text> 
    <BrowseDirectoryAction VariableName="INSTALLLOC" /> 
    </Button> 
    <Button Name="OptionsOkButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">OK</Button> 
    <!-- And other buttons/text --> 
</Page> 

ответ

0

Вы с помощью специального приложения загрузчика?

В источнике wixstandardbootstrapperapplication мы видим следующее:

// 
// OnClickOptionsBrowseButton - browse for install folder on the options page. 
// 
void OnClickOptionsBrowseButton() 
{ 
    WCHAR wzPath[MAX_PATH] = { }; 
    BROWSEINFOW browseInfo = { }; 
    PIDLIST_ABSOLUTE pidl = NULL; 

    browseInfo.hwndOwner = m_hWnd; 
    browseInfo.pszDisplayName = wzPath; 
    browseInfo.lpszTitle = m_pTheme->sczCaption; 
    browseInfo.ulFlags = BIF_RETURNONLYFSDIRS | BIF_USENEWUI; 
    pidl = ::SHBrowseForFolderW(&browseInfo); 
    if (pidl && ::SHGetPathFromIDListW(pidl, wzPath)) 
    { 
     ThemeSetTextControl(m_pTheme, WIXSTDBA_CONTROL_FOLDER_EDITBOX, wzPath); 
    } 

    if (pidl) 
    { 
     ::CoTaskMemFree(pidl); 
    } 

    return; 
} 

После запуска диалогового окна просмотра (BROWSEINFOW) он получает выбранный путь, а затем обновляет контроль текста.

Кроме того, когда вы нажимаете «Назад» или «Далее/Установить», вам необходимо установить переменную InstallFolder в значение в поле редактирования.

+0

Я использую бинарные файлы WiX 3.10.2 при загрузке с CodePlex. Я не вижу код, который вы упомянули, поскольку почти все скрыто внутри dll и exes. Единственная настройка, которую я создаю, - это макет текста и особенности файла в Burn. – ninjaria

0
<Button Name="BrowseButton" X="-11" Y="142" Width="75" Height="23" TabStop="yes" FontId="0"> 
    <Text>Browse</Text> 
    <BrowseDirectoryAction VariableName="INSTALLLOC" /> 
</Button> 

- это синтаксис темы WiX v4.x, но вы сказали в комментарии, что используете v3.x. WiX v3.x имел такой тип жесткого кодирования, поэтому вы должны основывать свою тему на теме v3.x. Я не помню, можно ли автопопулить FolderEditbox в v3.x.

<Editbox Name="FolderEditbox" X="11" Y="143" Width="-91" Height="21" TabStop="yes" FontId="3" FileSystemAutoComplete="yes" /> 
<Button Name="BrowseButton" X="-11" Y="142" Width="75" Height="23" TabStop="yes" FontId="3">#(loc.OptionsBrowseButton)</Button> 
+0

Спасибо за ваше предложение. Ваше решение действительно делает задачу получения «Обзор» для заполнения поля «Редактировать» выбором. Однако, похоже, что-то сломалось. – ninjaria

+0

Я заменил INSTALLLOC на FolderEditbox в файле темы и в коде bootstrapper. Теперь кнопка «Обзор» работает, но значение в редакторе не распознается установщиком. Он игнорирует путь в поле редактирования и просто устанавливает его в папку по умолчанию. Я думаю, что это потому, что имя пути не находится в CAPS, поэтому путь не проходит. Попробовал сменить FolderEditbox на FOLDEREDITBOX, но кнопка «Обзор» снова сломалась, но программное обеспечение действительно установило путь, введенный вручную в поле «Редактировать». – ninjaria

Смежные вопросы