2009-03-09 9 views
19

私はWiXメーリングリストでこれを聞いていますが、ダウンしているようです。WiXを使ってIIS仮想ディレクトリを作成する

私はデスクトップアプリケーションとローカルに実行されるWebアプリケーションの両方のアプリケーションを持っています。いくつかの基本的なWiXインストーラを作成しましたが、IIS拡張を使用してIISの下に仮想ディレクトリを作成していません。私はこれを行う方法の簡単な例を見つけることができませんでした。私がする必要があるのは、仮想ディレクトリを作成し、そのポートを設定し、残りのインストーラで作成している実際のディレクトリを指すだけです。

まだ有効になっていない場合は、マシン上のIISを有効にすることができますが、これは不可能であると推測していますが、とにかく私にとっては問題はありません。

重要な場合、このインストーラはVistaマシンでのみ実行されます。

答えて

2

私はWiXに慣れていませんが、IIS 6と7の両方をWMI(Windows Management Instrumentation)オブジェクトを使用して管理できます。私はPowerShellとC#の両方を使用して、Webサイト、仮想ディレクトリ、IIS上のアクセス許可などを作成しました。ほとんどのスクリプト環境では、これらのオブジェクトに手を差し伸べることができます。

8

iis:WebVirtualDiriis:WebApplicationhttp://schemas.microsoft.com/wix/IIsExtension名前空間を使用してください。

私は以前同様の質問を持っていたし、私は以下の記事が非常に有用であることが判明:Wix 3.0 Creating IIS Virtual Directory

+0

うわー、素敵なブログエントリ1+ – CheGueVerra

+4

ブログへのリンクはもう有効ではありません。新しいライブリンクを提供できますか?ありがとう。 – Nordin

+0

私の答えをチェックアウトする、これはブログの記事のコードだと思います。 – Aardvark

21

デビッド言及記事が失われたと思われるので、ここでは一例です。これにより、仮想ディレクトリにアプリケーションが作成されます。私は、次のデビッドPokludaが彼の答えに含ま欠落しているブログエントリへのコードだと思う(私は今、Googleがパージされていると思います)、Googleのキャッシュに掘る

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

。私はこれをSOに入れるためにいくつかの再フォーマットをしなければならなかった。それが醜いならごめんなさい。

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

キャッシュリンクが壊れています。 –

+0

リンクを削除しました – Aardvark

0

上記のスニペットは不適切な方法でiis:WebAddressを使用します。名前とポートに一致するすべてのWebサイトでこの機能を使用するには、IP = "*"を追加する必要があります。上記の例は、IISのWebサイトにIPアドレスが割り当てられている場合にインストール中に失敗します(wix CAは一般的にそれを見つけられません)

Rant:wixは多くの理由で恐ろしいです。例。属性がない場合は、既定のIPを持つWebサイトでのみ機能します。これはどれほど直感的ではありませんか。 Wixは欠けているIP要素のために少なくとも警告を出すべきです。さらに、デフォルトのIP(localhost)はIISメタベースの*として表され、同時にwixファイル*はすべてのWebサイト(*だけではない)を意味します。だから、本当に混乱し、直感的ではありません。