1

这是我的第一个 wix 项目。我下载了 wix 3.6 rc。我的安装项目包括 2 个 wcf 和 1 个 silverlight 项目。默认 Wix UI 一切正常。但是现在我需要向它添加 sql 数据库。它适用于以下默认值:

                  <Component Id='SqlComponent' Guid='8B72C159-1477-4A58-AFAE-E94D756BFFA6'>
                    <CreateFolder/>
                    <sql:SqlDatabase Id='SqlDatabase' Database='master' Server='.'
                      CreateOnInstall='yes' DropOnUninstall='no' ContinueOnError='yes'>
                      <sql:SqlScript Id='CreateTable' BinaryKey='CreateTable' ExecuteOnInstall='yes' />
                      <sql:SqlScript Id='CreateTable1' BinaryKey='CreateTable1' ExecuteOnInstall='yes' />
                    </sql:SqlDatabase>
                  </Component>

但是我需要为 sql 数据库路径、数据库名称、用户名和密码提供一个用户界面,如果没有指定用户和密码,则使用 windows 用户。

只是为了看看如何添加自定义 ui,我尝试了以下操作:但它会立即显示自定义 ui。但我希望它仅针对 sql 数据库安装显示。

<Control Id="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Transparent="yes" NoPrefix="yes">
  <Text>Ready to Install</Text>
</Control>

<Control Id="Install" Type="PushButton" X="304" Y="243" Width="56" Height="17"
    Default="yes" Text="Install">
  <Publish Event="EndDialog" Value="Return" />
</Control>

我想,一旦我让它在我想要的位置显示自定义 UI,我的下一个要求是能够获取用户输入的数据库路径、名称、用户和密码,并将该信息传递给脚本。我也不知道该怎么做。

4

2 回答 2

3

阅读 .chm 中的 WiX UI 扩展。选择最适合您的安装程序的对话框集。然后,您可以相应地对其进行自定义。假设您要自定义 WixUI_Advanced 对话框集:

  • 下载WiX 源代码
  • 导航到位于 中的 UI 扩展的源代码src\ext\UIExtension\wixlib
  • 复制文件 *WixUI_Advanced.wxs* 并将其重命名为不同的名称,例如 *WixUI_Advanced_Custom.wxs*。
  • 打开 .wxs 文件并确保将 UI Id 重命名为<UI Id="WixUI_Advanced_Custom">.
  • 将 *WixUI_Advanced_Custom.wxs* 添加到您的安装项目中。

现在您可以引用自定义对话框集,就像引用 UI 扩展中的其他对话框集一样。但是 UI 并没有完全定制,它只是提供与 WixUI_Advanced 对话框集相同的功能。要添加新对话框,您需要使用 wix 源作为示例创建一个新的 .wxs。查看其中的任何对话框以src\ext\UIExtension\wixlib获取帮助。然后在 *WixUI_Advanced_Custom.wxs* 中通过添加和修改<Publish>元素来引用您的对话框,以确定您的对话框何时显示。

于 2012-06-05T11:56:37.413 回答
3

最后我在这里找到了一篇关于 wix 的大开眼界的文章How to add custom UI

经过长时间的努力来理解 wix 的工作原理,上面的 codeproject 链接帮助我理解了。尤其是解释创建 UI 的部分(那篇文章中的 MyWebUI.wxs)是救命稻草。

于 2012-07-23T18:05:12.917 回答