是否有人在本机刻录软件包BA中的“选项”按钮下遇到“浏览文件夹”面板的问题?
我有一个编辑框,用于指定安装位置的位置。它被设置为默认位置。按“浏览”按钮可启动目录列表(“浏览文件夹”)以选择另一个安装位置。但是,无论选择什么,它都不会填充到编辑框中,因此无论用户选择什么,路径都将保持默认状态。可以手动更改(键入)“编辑”框内的路径,但不能通过“浏览”。
我想让这个工作,因为这是用户指定安装位置的唯一地方(我已经禁止了MSI的UI)。如果可能的话,我希望通过本地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 :(得分: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变量设置为编辑框中的值。
答案 1 :(得分: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主题。我不记得是否可以自动填充v3.x中的FolderEditbox
。
<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>