Lubo Blagoev's Blog

My thoughts on software and technology

Installing FTP7 Publishing Service on Windows Vista SP1


Not so long time ago Microsoft have released a new version of their FTP Publishing Service - FTP 7. It is a long waited update to the aging FTP6 service that shipped with Windows Server 2003 and Windows XP RTM. A lot have changed and in fact it is a complete rewrite introducing many things like IIS7 integration, integrating FTP into a Web site, virtual host name support,  user isolation, SSL , IPv6 and UTF8 support to name a few. For more go to the features overview or the detailed What's New page.

Unfortunately FTP7 requires Windows Server 2008 to be installed. That is not a big deal but knowing that Windows Server and Windows Vista share the same code base, a question raises can it be deployed on Windows Vista machine? The answer is yes and in the following lines I will show you how. Keep in mind that this is not officially supported and the license requires a valid Windows Server 2008 license.

First you need to download the installation file from the official IIS.NET site. It is an msi file. Running it directly will show you a not supported OS message and will exit. Now you immediately realize that there is a Launch Condition not satisfying the installation and you know that this is not a problem. You need to open ORCA and delete that custom launch condition so the installation can proceed without checking the NT version number.

image

That's exactly what I did trying to install FTP7 rc1 on Vista RTM. And it failed "gracefully" with the message "Configuration error: Unrecognized configuration path MACHINE/REDIRECTION"

image

This was on Vista RTM which had problems with HTTP redirection so I gave up till Vista SP1. Now when all the failing factors are removed - SP1 shipped and the final FTP7 version is alive I decided to try again. I did the same procedure but logged the installation using msiexec /L ftp7.log /I ftp7_x86_rtw.msi command line and to my surprise it failed again with another strange message:

DEBUG: Error 2356:  Couldn't locate cabinet in stream: _91EE006EA23648B6D8093FEC97F98FC7.
The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2356. The arguments are: _91EE006EA23648B6D8093FEC97F98FC7, ,
MSI (s) (A0:BC) [15:31:03:795]: Product: Microsoft FTP Service for IIS 7.0 -- The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2356. The arguments are: _91EE006EA23648B6D8093FEC97F98FC7, ,

Well not that strange since this service is not supported on Vista may be there is dependency on specific Windows Server 2008 API's. After inspecting the log I found that the setup fails after it can't locate a specific MEDIA stream in the msi file. That was strange since I haven't modified anything in it just a launch condition that have nothing to do with included msi streams. What was wrong was the fact that after deleting the launch condition I did a "Save As" and it happens that ORCA doesn't preserve all information from the original msi to the new one. (That's not so strange I know at least one other Microsoft tool that does the same thing - EntlibConfig.exe). After that I did a "Save" over the original file. This allows the setup to succeed.

Now you are free to setup your FTP through IIS Manager

image

I guess I could have written this in couple of lines huh!

Currently rated 4.0 by 1 people

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Vista SP1 broke my blog


Like every windows developer I installed Vista SP1 as soon as it came out on MSDN Subscriptions. I was happy and confident to know that the most of the glitches that bugged me till today will be gone. Service Pack 1 installed without any issues. (I even installed it on my work PC over remote desktop, so the next morning I come to work I wont have to wait for it. Pretty cool).

It was just when I tried to open my blog that I realized it is not working. I got Error 503 Service Unavailable response from the server. A quick look showed that the Application Pool for my blog was failing to serve the first request and logs the following error in Event log.

The worker process failed to initialize correctly and therefore could not be started. The data is the error.

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
 <System>
   <Provider Name="Microsoft-Windows-IIS-W3SVC-WP" Guid="{670080D9-742A-4187-8D16-41143D1290BD}" EventSourceName="W3SVC-WP"/>
   <EventID Qualifiers="49152">2276</EventID>
   <Version>0</Version>
   <Level>2</Level>
   <Task>0</Task>
   <Opcode>0</Opcode>
   <Keywords>0x80000000000000</Keywords>
   <TimeCreated SystemTime="2008-02-21T21:43:34.000Z"/>
   <EventRecordID>36822</EventRecordID>
   <Correlation/>
   <Execution ProcessID="0" ThreadID="0"/>
   <Channel>Application</Channel>
   <Computer>CONROE</Computer>
   <Security/>
 </System>
 <EventData>
   <Binary>05000780</Binary>
 </EventData>
</Event>

So the data is the error. This error in words is 80070005. I was one Windows SDK start away from finding out what that means. I searched for this number in the SDK and found out that this is a Standard COM error "E_ACCESSDENIED 80070005 General access denied error." So I realize I am dealing with a security issue. What was the exact resource that my App Pool was trying to connect and failed? Like Mark Russinovich would do I started Process Monitor to look for more detailed information since the report was totally non comprehensive. Working with Process Monitor is very easy just watch TechEd IT Forum 2007: The Case of the Unexplained... movie where Mark shows some more stuff. The most important rule for Process Monitor is know what you are looking for. In my case that was an Access Denied operation result in the Result column. This would be on a process with credentials that my app pool was configured to work with. So I highlighted all processes that have this user credentials. After that it was easy to identify the operation that failed - the selected row on the screenshot.

Process Monitor

The process's that runs my blog had no read access to C:\Windows\System32\inetsrv\config\schema directory. This directory is used by IIS to save its settings. So I changed the security settings to allow my user credentials to read from that directory and voila my blog is up again.

By the way if you watch the The Case of the Unexplained movie you will hear Mark Russinovich say that he strives to remove all hexadecimal error message from user space. I guess Mark and Microsoft as a whole must treat Event log messages the same as user level MessageBoxes. The event log message was not detailed at all and whoever wrote that COM logging should add the event error description not just writing a simple error code to the log.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5