如何使用WIX将虚拟目录下的目录转换为应用程序?
WIX将以下虚拟目录安装到IIS,我希望它还将 webservice 文件夹转换为应用程序。
答案 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"> ...