2015-11-23 1 views
0

После долгой работы для создания установщика для моего приложения с использованием http://wixtoolset.org/, и я использую 3.10v, наконец, я получил рабочий файл установки .msi.Связать локальные сайты IIS в раскрывающемся списке установки wix?

Но я хотел, чтобы список веб-сайтов, присутствующих на сервере IIS, отображался в раскрывающемся списке во время установки, поэтому я могу выбрать существующий веб-сайт с сервера IIS и использовать его для установки моего приложения.

Я создал элемент управления ComboBox на моей странице пользовательского интерфейса (файл .wxs) и застрял в написании пользовательского действия, любая помощь очень ценится !!

ответ

1

Просто добавьте пользовательское действие, как это:

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

в файле WXS и код для пользовательских действий ниже:

 
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 является собственностью переплетены в комбинированном окне.

добавить Microsoft.Web.Administration.dll из папки C: \ Program Files (x86) \ WiX Toolset v3.9 \ bin.

Сообщите мне, если вы правильно ответили или у вас есть какие-либо сомнения.

Смежные вопросы