2013-02-05 37 views
5

Tôi muốn thêm một ứng dụng vào một trang IIS hiện có không phải là trang IIS mặc định. Đây không phải là một yêu cầu thông thường, nhưng được yêu cầu khi triển khai vào một Win 2008 SBS, các ứng dụng MVC Web API phải được di chuyển trong 'SBS Web Applications' để hoạt động chính xác.Cách thêm ứng dụng vào trang IIS hiện có bằng cách sử dụng WiX

Trong IIS, tôi sẽ chuột phải vào 'Ứng dụng web SBS'> Thêm ứng dụng ... và đặt Bí danh, Hồ bơi ứng dụng & Đường dẫn vật lý.

Wix không cho phép tôi đặt các thuộc tính này trên IIS: WebApplication, hơn nữa có vẻ như tôi cần sử dụng IIS: WebVirtualDir, nhưng tôi không muốn hoặc cần phải làm điều này. Tôi chỉ cần trỏ thuộc tính Physical Path đến nơi API của tôi được cài đặt để làm việc này.

Tại sao tôi không thể nói với WiX IIS: WebỨng dụng Bí danh & Đường dẫn mà tôi muốn theo giao diện người dùng IIS?

Trong tất cả công việc WiX tôi đã làm, tôi đã nghĩ rằng đây sẽ là một trong những điều dễ dàng hơn để làm.

Lưu ý: Tôi muốn tạo Ứng dụng, tôi không muốn hoặc cần tạo Trang web - nó đã có sẵn.

Trả lời

4

Bạn có thể đạt được các mục tiêu được chỉ định với WIX. Tôi thậm chí còn có nhiều biến thể phức tạp hơn: cài đặt trang Web mới hoặc trang web hiện tại, cho IIS 6, IIS 7 và IIS 7.5.

Để cài đặt vào trang web hiện tại, WIX xác định trang web dựa trên SiteId. Nếu trang web của bạn có ID không tự tạo, bạn cần chỉ định rõ ràng thay vì đặt * trong trường tương ứng. Nếu không, siteId được tạo dựa trên thuộc tính Description của nó, vì vậy bạn cần chỉ định mô tả chính xác để tham khảo trang web hiện có.

Ở đây sau thực hiện của tôi (Tôi hy vọng bạn có thể trích xuất những gì bạn cần từ nó):

<PropertyRef Id="FRAMEWORKROOT"/> 

<PropertyRef Id="SITE_INSTALL_MODE"/> 
<PropertyRef Id="SITE_NAME"/> 
<PropertyRef Id="SITE_PORT"/> 
<PropertyRef Id="SITE_VIRT_DIR"/> 
<PropertyRef Id="SITE_APP_NAME"/> 
<PropertyRef Id="SITE_HEADER"/> 
<PropertyRef Id="SITE_APP_POOL"/> 
<PropertyRef Id="SITE_ID"/> 

<Property Id="SITE_APP_NAME" Value="{ProductId}"/> 

<iis:WebApplication Id="IIS6WebApp" Name="[SITE_APP_NAME]" WebAppPool="AppPool" > 
    <iis:WebApplicationExtension Verbs="GET,HEAD,POST" CheckPath="no" Script="yes" Executable="[FRAMEWORKROOT]v4.0.30319\aspnet_isapi.dll" /> 
</iis:WebApplication> 

<iis:WebApplication Id="Iis7WebApp" Name="[SITE_APP_NAME]" WebAppPool="AppPool"></iis:WebApplication> 

<iis:WebSite Id="ExistingWebSite" Description="[EXISTING_SITE_NAME]" SiteId="*"> 
    <iis:WebAddress Id="ExistingSite_IIS7_Header_Binding" Port="[SITE_PORT]" Header="[SITE_HEADER]" /> 
</iis:WebSite> 

<util:Group Id="IisUsersGroup" Name="[IisGroup]" Domain="[ComputerName]"/> 

<DirectoryRef Id="SITE_INSTALLDIR"> 
    <Component Id="AppPoolConfigure" Guid="YOURGUID-5549-48E8-B989-AFC61D279527" KeyPath="yes" Permanent="no"> 
    <util:User Id="SiteUser" Domain="[APP_USER_DOMAIN]" Name="[APP_USER_NAME]" Password="[APP_USER_PASSWORD]" CreateUser="no" UpdateIfExists="no" RemoveOnUninstall="no"> 
     <util:GroupRef Id="IisUsersGroup"/> 
    </util:User> 

    <iis:WebAppPool Id="AppPool" Name="[SITE_APP_POOL]" ManagedRuntimeVersion="v4.0" ManagedPipelineMode="integrated" Identity="other" User="SiteUser" /> 
    </Component> 

    <Component Id="Iis6NewSiteConfigure" Guid="YOURGUID-8592-4E69-8D80-E42745307D7A" KeyPath="yes" Permanent="no"> 
    <Condition><![CDATA[Installed OR (SITE_INSTALL_MODE = "NewSite" AND IISMAJORVERSION AND (IISMAJORVERSION = "#6"))]]></Condition> 
    <iis:WebSite Id="NewWebSite_IIS6" Description="[SITE_NAME]" 
       AutoStart="yes" StartOnInstall="yes" ConfigureIfExists="no" 
       Directory="SITE_INSTALLDIR" ConnectionTimeout="360" SiteId="[SITE_ID]" 
       DirProperties="WebDirProperties" WebApplication="IIS6WebApp"> 
     <iis:WebAddress Id="Site_IIS6_Header_Bindings" Port="[SITE_PORT]" Header="[SITE_HEADER]" /> 
    </iis:WebSite> 
    </Component> 

    <Component Id="Iis6ExistingSiteConfigure" Guid="YOURGUID-8ECB-4AC3-95B1-B7287D0AC903" KeyPath="yes" Permanent="no"> 
    <Condition><![CDATA[Installed OR (SITE_INSTALL_MODE = "ExistingSiteNewVDir" AND IISMAJORVERSION AND (IISMAJORVERSION = "#6"))]]></Condition> 
     <iis:WebVirtualDir Id="Site_IIS6_VDir" Directory="SITE_INSTALLDIR" Alias="[SITE_VIRT_DIR]" WebSite="ExistingWebSite" 
         DirProperties="WebDirProperties" WebApplication="IIS6WebApp"/> 
    </Component> 

    <Component Id="Iis6ConfigExtentions" Guid="YOURGUID-55F2-48E3-8B08-E37BA5137D8D" KeyPath="yes" Permanent="yes"> 
    <Condition><![CDATA[Installed OR (IISMAJORVERSION AND (IISMAJORVERSION = "#6"))]]></Condition> 
    <iis:WebServiceExtension Id="ExtensionASP4" Group="ASP.NET v4.0.30319" Allow="yes" File="[FRAMEWORKROOT]v4.0.30319\aspnet_isapi.dll" Description="ASP.NET v4.0.30319"/> 
    </Component> 

    <Component Id="Iis7NewSiteConfigure" Guid="YOURGUID-5DF6-4071-94F4-89D1EDAE8D90" KeyPath="yes" Permanent="no"> 
    <Condition><![CDATA[Installed OR (SITE_INSTALL_MODE = "NewSite" AND IISMAJORVERSION AND (IISMAJORVERSION > "#6"))]]></Condition> 
    <iis:WebSite Id="WebSite_IIS7" Description="[SITE_NAME]" 
       AutoStart="yes" StartOnInstall="yes" ConfigureIfExists="yes" 
       Directory="SITE_INSTALLDIR" ConnectionTimeout="360" SiteId="[SITE_ID]" 
       DirProperties="WebDirProperties" WebApplication="Iis7WebApp"> 
     <iis:WebAddress Id="NewSite_IIS7_Header_Binding" Port="[SITE_PORT]" Header="[SITE_HEADER]" /> 
    </iis:WebSite> 
    </Component> 

    <Component Id="Iis7ExistingSiteConfigure" Guid="YOURGUID-FBBE-4379-8C7B-CDBD08EDCBA2" KeyPath="yes" Permanent="no"> 
    <Condition><![CDATA[Installed OR (SITE_INSTALL_MODE = "ExistingSiteNewVDir" AND IISMAJORVERSION AND (IISMAJORVERSION > "#6"))]]></Condition> 
     <iis:WebVirtualDir Id="Site_IIS7_VDir" Directory="SITE_INSTALLDIR" Alias="[SITE_VIRT_DIR]" WebSite="ExistingWebSite" 
         DirProperties="WebDirProperties" WebApplication="Iis7WebApp"/> 
    </Component> 
</DirectoryRef> 

<ComponentGroup Id="IisSiteOrVDirCreate"> 
    <ComponentRef Id="AppPoolConfigure"/> 
    <ComponentRef Id="Iis6NewSiteConfigure"/> 
    <ComponentRef Id="Iis6ExistingSiteConfigure"/> 
    <ComponentRef Id="Iis6ConfigExtentions"/> 
    <ComponentRef Id="Iis7NewSiteConfigure"/> 
    <ComponentRef Id="Iis7ExistingSiteConfigure"/> 
</ComponentGroup> 

<CustomAction Id="SetIisGroupToIUSRS" Property="IisGroup" Value="IIS_IUSRS" /> 
<CustomAction Id="SetIisGroupToWPG" Property="IisGroup" Value="IIS_WPG" /> 

<CustomAction Id="SetIisSiteUser" Property="IisSiteUser" Value="[APP_USER_DOMAIN]\[APP_USER_NAME]"/> 

<InstallExecuteSequence> 
    <Custom Action="SetIisGroupToIUSRS" After="AppSearch">IISMAJORVERSION>="#7"</Custom> 
    <Custom Action="SetIisGroupToWPG" After="AppSearch">IISMAJORVERSION="#6"</Custom> 
    <Custom Action="SetIisSiteUser" Before="InstallInitialize">1</Custom> 
</InstallExecuteSequence> 
Các vấn đề liên quan