gpt4 book ai didi

wix - 使用 WiX 浏览器对话框设置编辑框值

转载 作者:行者123 更新时间:2023-12-01 20:16:31 25 4
gpt4 key购买 nike

我正在尝试创建一个 WiX 安装程序对话框,该对话框提供用户需要填写目录位置的一系列文本框。

我想要做的是在每个对话框旁边放置一个浏览按钮,当他们单击它时,将出现 WiX 浏览对话框,他们选择一个文件位置,单击“确定”,然后浏览按钮旁边的文本框将被填写。

我知道如何使用自定义操作来做到这一点,但我想知道是否有一种纯粹的 WiX 方法可以做到这一点。

编辑:我应该更清楚。我的意思是目录位置,而不是文件位置。正如下面一位用户指出的那样,Wix 不支持文件浏览。

最佳答案

我找到了一种完全在 WiX 中完成此操作的方法。 WiX 附带一个名为 BrowseDlg 的浏览对话框。这是我所做的:

  1. 我创建了一个包含 PathEdit 控件和 PushButton 控件的对话框。请注意,PathEdit 控件的 Indirect 属性设置为 yes。这意味着无论您将 Property 设置为什么,都只是指向其他内容的指针。

         <Dialog Id="BackupConfigDlg" Width="370" Height="270" Title="Backup Configuration">
    <Control Type="Text" Id="lblInstructions" Width="348" Height="13" X="10" Y="10">
    <Text>{\WixUI_Font_Title}Please select the directory you want to backup.</Text>
    </Control>
    <Control Type="Text" Id="lblBackupDirectory" Width="69" Height="9" X="10" Y="40" Text="Backup directory:">
    </Control>
    <Control Type="PathEdit" Id="Folder" Width="219" Height="15" X="82" Y="38" Property="_BrowseProperty" Indirect="yes" />
    <Control Type="PushButton" Id="Browse" Width="56" Height="17" X="304" Y="37" Text="Browse..." />
    <Control Type="Line" Id="line" Width="362" Height="2" X="4" Y="229" />
    <Control Id="Cancel" Type="PushButton" X="239" Y="240" Width="56" Height="17" Cancel="yes" Text="Cancel">
    <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
    </Control>
    <Control Type="PushButton" Id="Install" Width="56" Height="17" X="300" Y="240" Text="Install">
    <Publish Event="EndDialog" Value="Return" />
    </Control>
    </Dialog>
  2. 浏览对话框(我们最终将到达)期望在 Directory 表中设置一个对象,因此我们需要创建一个仅用于保存我们浏览到的值的 Directory 对象。由于我们不会在其中放置任何组件,因此文件系统上的任何内容都不会因我们选择的目录而发生变化。我将我的目录称为 TARGETBACKUPDIRECTORY。

         <Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="TARGETBACKUPDIRECTORY">
    </Directory>
    ...
    </Directory>
  3. 现在我们需要创建一个指向 Directory 对象的属性。

     <Property Id="BACKUPDIRECTORY" Value="TARGETBACKUPDIRECTORY" />
  4. 我们现在需要确保在此对话框打开之前 _BrowserProperty 属性已正确绑定(bind)到 BACKUPDIRECTORY(因为它指向我们要设置的 Directory 对象)。如果不这样做,当您尝试打开该对话框时,您将在安装过程中收到错误消息。在我的示例中,PrevDlg 是出现在 BackupConfigDlg 之前的对话框。这里发生的情况是,当按下“下一步”按钮时,我将 _BrowserProperty 属性设置为 BACKUPDIRECTORY,然后打开该对话框。它必须按该顺序进行,因此我使用 Order 属性来强制执行它。当按下浏览按钮时,我会做同样的事情,不确定我需要做什么,但我这样做只是为了安全措施。

         <Publish Dialog="PrevDlg" Control="Next" Property="_BrowseProperty" Value="[BACKUPDIRECTORY]" Order="1">1</Publish>
    <Publish Dialog="PrevDlg" Control="Next" Event="NewDialog" Value="BackupConfigDlg" Order="2">1</Publish>
    <Publish Dialog="BackupConfigDlg" Control="Browse" Property="_BrowseProperty" Value="[BACKUPDIRECTORY]" Order="1">
    </Publish>
    <Publish Dialog="BackupConfigDlg" Control="Browse" Event="SpawnDialog" Value="BrowseDlg" Order="2">
    </Publish>

这对我有用。

关于wix - 使用 WiX 浏览器对话框设置编辑框值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8496995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com