使用WIX将虚拟目录下的文件夹转换为Application

时间:2012-01-16 11:05:15

标签: iis wix

如何使用WIX将虚拟目录下的目录转换为应用程序?

WIX将以下虚拟目录安装到IIS,我希望它还将 webservice 文件夹转换为应用程序。

4 个答案:

答案 0 :(得分:8)

我找不到通过WIX或IIS扩展程序执行此操作的方法,因此我使用了调用外部命令。为了将来参考,命令是:

IIS 5

C:\Inetpub\AdminScripts\mkwebdir.vbs -c Localhost -w "Default Web Site" -v "sentry/webservice","{physical path}"
C:\Inetpub\AdminScripts\adsutil.vbs appcreateinproc w3svc/1/root/sentry/webservice

IIS 6

C:\Windows\System32\iisvdir.vbs /create "Default Web Site/Sentry/webservice" webservice "{physical path}"

IIS 7

C:\Windows\System32\inetsrv\appcmd add app /site.name:"Default Web Site" /path:/Sentry/webservice /physicalPath:"{physical path}"

答案 1 :(得分:2)

这可以通过IISExtension完成,正如丹尼尔莫里特所暗示的那样。由于很难找到这样的示例代码,我想我会发布我是如何做到的。

<!-- Your example uses the default web site. -->
<iis:WebSite Id="DefaultWebSite" Description="Default Web Site" SiteId="*">
  <iis:WebAddress Id="DefaultWebAddress" Port="80"/>
</iis:WebSite>

<!-- Web Dir Properties to enable access to a Web Application. -->
<iis:WebDirProperties Id="AnonymousExecuteAndScript" 
                      Read="yes" 
                      Write="no" 
                      Execute="yes" 
                      Script="yes" 
                      AnonymousAccess="yes" 
                      Index="no" 
                      LogVisits="no"/>

<!-- Assumes the presence of this directory reference. -->
<DirectoryRef Id="SentryWebServiceDir">
  <Component Id="SentryWebServiceComponent" Guid="{GUID-GOES-HERE}">

    <iis:WebVirtualDir Id="SentryWebService"
                       DirProperties="AnonymousExecuteAndScript" 
                       Alias="Sentry/webservice"
                       Directory="SentryWebServiceDir"
                       WebSite="DefaultWebSite">

      <!-- Make this virtual directory a web application -->
      <iis:WebApplication Id="SentryWebServiceApp" Name="webservice" WebAppPool="DefaultAppPool"/>
    </iis:WebVirtualDir>

    <!-- Workaround for the need for a KeyPath for this component. -->
    <RegistryValue Root="HKLM"
              Key="SOFTWARE\YourCompany\Sentry\WebService"
              KeyPath="yes"
              Value="1"
              Type="binary"
              Name="Installed"
              Id="SentryWebServiceInstalled"/>
  </Component>
</DirectoryRef>

以上所有内容都可以嵌套在<Fragment>元素中。

答案 2 :(得分:1)

您可以在项目中添加对WiX IISExtension的引用,并使用它创建一个。

可以在此处找到一个很好的例子:Using WiX to create an IIS virtual directory

答案 3 :(得分:0)

我已经测试了这种方法,它的确有效:

http://www.mail-archive.com/wix-users@lists.sourceforge.net/msg04374.html

它表示将整个路径放在Alias中,例如

<iis:WebVirtualDir Id="VIRTDIR_Sentry_webservice"
                       Directory="WebService"
                       Alias="Sentry/webservice"
                       WebSite="SITE_Default"> ...