2015-11-23 60 views
0

經過漫長的工作,爲我的應用程序創建安裝程序,使用http://wixtoolset.org/並且我使用3.10v,最後我得到了工作.msi安裝程序文件。在wix安裝的下拉列表中綁定IIS本地網站?

,但我想的網站,存在於IIS服務器在安裝過程中的下拉列表中顯示,這樣我可以選擇IIS服務器的現有網站,並用它來安裝我的應用程序列表。

我在我的UI頁面(.wxs文件)中創建了一個ComboBox控件,並且堅持編寫自定義動作,任何幫助非常感謝!在您的WXS文件

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

和自定義操作的代碼如下:

回答

1

只需添加自定義操作,這樣

 
namespace GetIISWebsites 
{ 
    public class CustomActions 
    { 
     [CustomAction] 
     public static 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(); 
      List instances = RetrieveIISWebsites(); 
      int Counter = 0; 
      int Index = 0; 
      bool flag = false; 
      try 
      { 
       foreach (string str in instances) 
       { 
        Record 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); 
        Counter = Index; 
        ++Index; 
       } 
      } 
      catch (Exception ex) 
      { 
       ex.ToString(); 
       xiSession.Log("Exception Details: " + ex.Message); 
      } 
      lView.Close(); 

      xiSession.Log("Closing view"); 
      lView.Close(); 
      return ActionResult.Success; 
     } 
     private static List RetrieveIISWebsites() 
     { 
      List result = new List(); 
      var websites = GetSites(); 
      foreach (Site site in websites) 
      { 
       result.Add(site.Name); 
      } 

      return result; 
     } 
     private static SiteCollection GetSites() 
     { 
      var iisManager = new ServerManager(); 
      SiteCollection sites = iisManager.Sites; 
      return sites; 
     } 
    } 
}

這裏XXXXXXXX是綁定到組合框的屬性。

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

如果回答正確或有任何疑問,請告知我。