2009-03-09 18 views
19

Bunu WiX posta listesine sormak isterdim, ancak bu aşağı gibi görünüyor.Bir IIS sanal dizini oluşturmak için WiX kullanma

Hem masaüstü uygulaması hem de yerel olarak çalışan bir web uygulaması olan bir uygulamam var. Birkaç temel WiX yükleyicisi oluşturdum, ancak IIS altında sanal dizin oluşturmak için henüz IIS uzantısını kullanmadım. Bunun nasıl yapılacağına dair basit bir örnek bulamadım. Tek yapmam gereken sanal dizini oluşturmak, bağlantı noktasını ayarlamak ve yükleyicinin geri kalanıyla oluşturduğum gerçek bir dizine işaret etmektir.

Zaten etkin değilse, makinede IIS'yi etkinleştiren bir bonus olurdu, ancak bunun mümkün olmadığını tahmin ediyorum ve zaten benim için bir anlaşma değil.

Önemli ise, bu yükleyici yalnızca Vista makinelerinde çalıştırılacaktır.

cevap

2

WiX ile aşina değilim, ancak hem IIS 6 hem de 7, WMI (Windows Yönetim Araçları) nesneleri kullanılarak yönetilebilir. IIS'de web siteleri, sanal dizinler, izinler vb. Oluşturmak için hem PowerShell hem de C# kullanıyorum. Bu nesneleri üzerinde çoğu komut dosyası ortamından elde edebileceksiniz.

8

http://schemas.microsoft.com/wix/IIsExtension ad alanından iis:WebVirtualDir ve iis:WebApplication kullanın.

Daha önce benzer bir soru vardı ve oldukça yararlı aşağıdaki makale buldum: David tarafından belirtilen makalede koptuğu anlaşılıyor yana Wix 3.0 Creating IIS Virtual Directory

+0

Wow, nice blog girişi 1+ – CheGueVerra

+4

blogun bağlantısı artık geçerli değil. Yeni canlı link verebilir misiniz? Teşekkürler. – Nordin

+0

Checkout Cevabım, bence bu blog makalesinin kodu. – Aardvark

21

, burada bir örnektir. Bu, sanal dizinde de bir uygulama oluşturur. Aşağıdaki David POKLUDA onun cevabını dahil eksik blog girişine kod olduğunu düşünüyorum (ben şimdi Google tarafından temizlendi düşünüyorum) Google'ın önbelleğinde Kazı

<?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

. Çirkin olsaydı özür dilerim.

<?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

Önbellek bağlantısı artık bozuk. –

+0

Bağlantıyı kaldırıldı – Aardvark

0

Yukarıdaki parçacıklar, iis: WebAddress'i uygun olmayan bir şekilde kullanır. Bunun adı ve bağlantı noktasıyla eşleşen tüm web sitelerinde çalışması için IP = "*" eklemeniz gerekir. IIS'de web sitesine atanan bir ip adresi varsa, yukarıdaki örnek başarısız olur (wix CA, genel olarak bulamaz)

Rant: wix birçok nedenden dolayı korkunç, bence ve bu iyi bir şey. örnek. Öznitelik eksikse, yalnızca varsayılan IP'ye sahip web siteleri için çalışır - bu ne kadar belirsizdir. Wix en azından eksik bir IP elemanı için bir uyarı yapmalıdır. Ayrıca, varsayılan IP (localhost) IIS metatabanında * olarak gösterilir, aynı zamanda wix dosyasında * tüm web siteleri (sadece * değil) anlamına gelir. Yani gerçekten kafa karıştırıcı ve hiç de sezgisel değil.

İlgili konular