2009-03-09 39 views
19

Tôi muốn hỏi điều này trong danh sách gửi thư WiX, nhưng có vẻ như nó đã bị hỏng.Sử dụng WiX để tạo thư mục ảo IIS

Tôi có một ứng dụng vừa là ứng dụng dành cho máy tính để bàn vừa là một ứng dụng web chạy cục bộ. Tôi đã tạo một vài trình cài đặt WiX cơ bản, nhưng chưa sử dụng phần mở rộng IIS để tạo một thư mục ảo trong IIS. Tôi đã không thể tìm thấy một ví dụ đơn giản về cách làm điều này. Tất cả những gì tôi cần làm là tạo thư mục ảo, thiết lập cổng của nó và trỏ nó vào thư mục thực mà tôi đang tạo bằng phần còn lại của trình cài đặt.

Tiền thưởng sẽ cho phép IIS trên máy nếu nó chưa được kích hoạt, nhưng tôi đoán điều đó là không thể, và không phải là một dealbreaker cho tôi anyway.

Nếu có vấn đề, trình cài đặt này sẽ chỉ chạy trên các máy Vista.

Trả lời

2

Tôi không quen với WiX, nhưng cả IIS 6 và 7 đều có thể được quản lý bằng các đối tượng WMI (Windows Management Instrumentation). Tôi đã sử dụng cả PowerShell và C# để tạo các trang web, thư mục ảo, quyền, vv trên IIS. Bạn sẽ có thể nhận được bàn tay của bạn trên các đối tượng này từ hầu hết các môi trường kịch bản.

8

Sử dụng iis:WebVirtualDiriis:WebApplication từ không gian tên http://schemas.microsoft.com/wix/IIsExtension.

Tôi đã có một câu hỏi tương tự trước đó và tôi thấy các bài viết sau đây khá hữu ích: Wix 3.0 Creating IIS Virtual Directory

+0

Mục nhập blog đẹp, 1+ – CheGueVerra

+4

liên kết tới blog không còn hợp lệ. Bạn có thể cung cấp liên kết trực tiếp mới không. Cảm ơn. – Nordin

+0

Thanh toán câu trả lời của tôi, tôi nghĩ rằng đây là mã của bài viết trên blog. – Aardvark

21

Kể từ khi bài báo đề cập bởi David dường như mất đi, đây là một ví dụ. Điều này cũng tạo ra một ứng dụng trong thư mục ảo.

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
    xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension"> 
    <Product Id="6f2b2358-YOUR-GUID-HERE-aa394e0a73a2" Name="WixProject" Language="1033" Version="1.0.0.0" Manufacturer="WixProject" UpgradeCode="225aa7b2-YOUR-GUID-HERE-110ef084dd72"> 
     <Package InstallerVersion="200" Compressed="yes" /> 

     <Media Id="1" Cabinet="media1.cab" EmbedCab="yes" /> 

     <!-- Reference existing site at port 8080 --> 
     <iis:WebSite Id="My.Site" Description="My Site"> 
      <iis:WebAddress Id="My.Web.Address" Port="8080"/> 
     </iis:WebSite> 

     <Directory Id="TARGETDIR" Name="SourceDir"> 
      <Directory Id="ProgramFilesFolder"> 
       <Directory Id="INSTALLLOCATION" Name="WixProject"> 
        <Component Id="IIS.Component" Guid="{6FAD9EC7-YOUR-GUID-HERE-C8AF5F6F707F}" KeyPath="yes"> 
         <iis:WebVirtualDir Id="My.VirtualDir" Alias="foo" Directory="INSTALLLOCATION" WebSite="My.Site"> 
          <iis:WebApplication Id="My.Application1" Name="Web Application 1"/> 
         </iis:WebVirtualDir> 
        </Component> 

       </Directory> 
      </Directory> 
     </Directory> 

     <Feature Id="ProductFeature" Title="WixProject" Level="1"> 
      <ComponentRef Id="IIS.Component" /> 
     </Feature> 
    </Product> 
</Wix> 
5

Tìm trong bộ nhớ cache của Google (mà tôi nghĩ bây giờ đã bị Google xóa) Tôi cho rằng đây là mã cho mục nhập blog bị thiếu David Pokluda có trong câu trả lời của anh ấy. Tôi đã phải làm một số định dạng lại để có được điều này vào SO, xin lỗi nếu nó xấu xí.

<?xml version="1.0" encoding="UTF-8"?> 
<!-- 
IMPORTANT 
1. need to add the schema iis.xsd to the property window 
2. add the following iis namespace 
3. add the Visual Studio reference WixIIsExtenion 
--> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension"> 
    <Product Id="7b523f47-YOUR-GUID-HERE-fea6be516471" 
      Name="Vince Wix 3 Web Service" 
      Language="1033" 
      Version="1.0.0.0" 
      Manufacturer="Vince LLC" 
      UpgradeCode="0a8c10df-YOUR-GUID-HERE-50b9ecdb0a41"> 
    <Package InstallerVersion="200" Compressed="yes" /> 

    <Media Id="1" Cabinet="WebAppWixProject.cab" EmbedCab="yes" /> 

    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder"> 
     <Directory Id="WebApplicationFolder" Name="MyWebApp"> 
      <Component Id="ProductComponent" Guid="80b0ee2a-YOUR-GUID-HERE-33a23eb0588e"> 
      <File Id="Default.aspx" Name="Default.aspx" Source="..\MyWebApp\Default.aspx" DiskId="1" /> 
      <File Id="Default.aspx.cs" Name="Default.aspx.cs" Source="..\MyWebApp\Default.aspx.cs" DiskId="1"/> 
      <iis:WebVirtualDir Id="MyWebApp" Alias="MyWebApp" Directory="WebApplicationFolder" WebSite="DefaultWebSite"> 
       <iis:WebApplication Id="TestWebApplication" Name="Test" /> 
      </iis:WebVirtualDir> 
      </Component> 
     </Directory> 
     </Directory> 
    </Directory> 

    <!-- 
    IMPORTANT 
    Add a virtual directory to an existing web site 
    If put it inside the Component, a new Web Site will be created and uninstall will remove it 
    --> 
    <iis:WebSite Id='DefaultWebSite' Description='Default Web Site' Directory='WebApplicationFolder'> 
     <iis:WebAddress Id="AllUnassigned" Port="80" /> 
    </iis:WebSite> 

    <Feature Id="ProductFeature" Title="Vince Wix 3 Web Service" Level="1"> 
     <ComponentRef Id="ProductComponent" /> 
    </Feature> 
    </Product> 
</Wix> 

<!-- 
IMPORTANT 
To get rid of light.exe location error, do the following on the Linker Tab: 
Set culture to: en-US 
Supress Schema Validation in the Advanced Button 
--> 
+0

Liên kết bộ nhớ cache hiện đã bị hỏng. –

+0

Đã xóa liên kết – Aardvark

0

Đoạn mã trên sử dụng iis: WebThêm một cách không đúng cách. Bạn cần phải thêm IP = "*" nếu bạn muốn điều này làm việc với tất cả các trang web phù hợp với tên và cổng. Ví dụ trên không thành công trong quá trình cài đặt nếu có địa chỉ IP được gán cho trang web trong IIS (wix CA sẽ không tìm thấy nó chung)

Rant: wix là khủng khiếp vì nhiều lý do, theo ý kiến ​​của tôi và đây là một điều tốt thí dụ. Nếu thuộc tính bị thiếu, thuộc tính sẽ chỉ hoạt động đối với các trang web có IP mặc định - cách này không trực quan. Wix ít nhất phải phát ra một cảnh báo cho một phần tử IP bị thiếu. Hơn nữa IP mặc định (localhost) được biểu diễn dưới dạng * trong IIS metabase, đồng thời trong tệp wix * có nghĩa là tất cả các trang web (không chỉ *). Vì vậy, nó thực sự là khó hiểu và không trực quan ở tất cả.

Các vấn đề liên quan