在wix安装的下拉列表中绑定IIS本地网站?

Posted

技术标签:

【中文标题】在wix安装的下拉列表中绑定IIS本地网站?【英文标题】:Bind IIS local websites in dropdown list of wix installation? 【发布时间】:2015-11-23 13:31:25 【问题描述】:

在使用 http://wixtoolset.org/ 为我的应用程序创建安装程序工作了很长时间之后,我使用的是 3.10v,最后我得到了工作的 .msi 安装程序文件。

但我希望 IIS 服务器中存在的网站列表在安装期间显示在下拉列表中,以便我可以从 IIS 服务器中选择现有网站并使用它来安装我的应用程序。

我在我的 UI 页面(.wxs 文件)中创建了一个 ComboBox 控件,并坚持编写自定义操作,任何帮助非常感谢!!

【问题讨论】:

【参考方案1】:

只需像这样添加一个自定义操作:

  <CustomAction Id="GetIISWebsitesID" BinaryKey="GetIISWebsites" DllEntry="CustomAction1" Execute="immediate" Return="check"></CustomAction>
  <Binary Id="GetIISWebsites" SourceFile="..\GetIISWebsites\bin\Debug\GetIISWebsites.CA.dll"/>

在您的 wxs 文件中,自定义操作的代码如下:

命名空间 GetIISWebsites 公共类 CustomActions [自定义动作] 公共静态 ActionResult CustomAction1(Session xiSession) System.Diagnostics.Debugger.Launch(); Microsoft.Deployment.WindowsInstaller.View lView = xiSession.Database.OpenView("DELETE FROM ComboBox WHERE ComboBox.Property='xxxxxxxx'"); lView.Execute(); lView = xiSession.Database.OpenView("SELECT * FROM ComboBox"); lView.Execute(); 列出实例 = RetrieveIISWebsites(); 整数计数器 = 0; 整数索引 = 0; 布尔标志 = 假; 尝试 foreach(实例中的字符串 str) 记录 lRecord = xiSession.Database.CreateRecord(4); lRecord.SetString(1, "xxxxxxxx"); lRecord.SetInteger(2, Index); lRecord.SetString(3, str); lRecord.SetString(4, str); lView.Modify(ViewModifyMode.InsertTemporary, lRecord); 计数器=索引; ++索引; 捕捉(例外前) ex.ToString(); xiSession.Log("异常详情:" + ex.Message); lView.Close(); xiSession.Log("关闭视图"); lView.Close(); 返回 ActionResult.Success; 私有静态列表 RetrieveIISWebsites() 列表结果 = 新列表(); var 网站 = GetSites(); foreach(网站中的网站) 结果.添加(站点。名称); 返回结果; 私有静态 SiteCollection GetSites() var iisManager = new ServerManager(); SiteCollection 站点 = iisManager.Sites; 返回站点;

这里 xxxxxxxx 是绑定到组合框的属性。

从 C:\Program Files (x86)\WiX Toolset v3.9\bin 文件夹中添加 Microsoft.Web.Administration.dll。

如果回答正确或有任何疑问,请告诉我。

【讨论】:

如何使用 wix 将模块添加到退出的 Web 应用程序?我在 Modules 目录下有一个 WesbSite,我需要在 modules 目录下安装我的应用程序。

以上是关于在wix安装的下拉列表中绑定IIS本地网站?的主要内容,如果未能解决你的问题,请参考以下文章

使用 ajax 和 webmethod 在 asp.net 中使用 web 方法和 ajax 级联下拉列表绑定下拉数据

IIS配置好了却不能访问网站

如何隐藏组合框下拉列表中的列?

WPF{ComboBox绑定类对象, 下拉列显示的值,与取到的值}

使用 WiX 创建 IIS 虚拟目录

IIS网站升级