I use in my package a launch condition, which says that IIS Version 5 is required. The package worked on hundred of installations. But today I got a message from one of my customers that he could not install my package, because it says always IIS 5 is not installed. But there is definitely IIS 6 on this machine, the regkey HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp\MajorVersion says HEX 6.
My question is, how is the required IIS version detected by the installer?
The Advanced Installer IIS predefined launch condition searches for "inetinfo.exe" and "w3wp.exe" IIS installation files on the target machine. It seems that the IIS installation on that machine was somehow broken if the registry key exits without the files.
You can try to reccomend your client to test the IIS installation by loading a page from the browser for example.
If the installer looks only for this two files, how is the version detected? Please send exactly how the IIS is detected, because I have to analyze the problem at the customers side.
This could not be. I tested it now with a machine where no IIS is installed. I manually created the inetsrv folder and copied the two files inetinfo.exe and w3wp.exe in this folder, the registry keys are also present. But the installer still says that there is no IIS.
So please tell me how I can analyze, why YOUR installer does not detect the IIS.
Actually, my answer was not complete.
The launch condition search verifies the minimum version of IIS dictated by the version of the two files. In conclusion, if you select IIS 5 as the launch condition for example, Advanced Installer will automatically add a search for the "w3wp.exe" file on the target machine. In this case, if the found version of the file is lower or the file doesn't exist, your package won't be launched.
Can you please make sure the versions of the .EXE files you copied are higher or equal than the launch condition you have set in your test package?
Also, if you are testing on a 64-bit machine you should add the files in the SysWoW64 folder as the search is always performed in the 32-bit folder.
As a generic observation and as you said yourself, since the launch condition works well on several computers, needless to say is that the one machine is the cause of this issue.
Sorry but here must be another dependencie. As you can see on the screenshot both file exists and are in the correct version. Also the Registry key is present. I know that there is something with the installation of the IIS, but I want to know what is wrong.
The IIS predefined launch condition works correctly. Even you mentioned that it worked on hundreds of installations. The fact that it doesn't work on one specific machine suggests a problem with that machine.
Manually creating registry entries or copying files is not a solution or a way of testing the launch condition. The launch condition tries to determine if IIS is installed correctly, not if some resources are in the right places.
We recommend correctly installing IIS on the machine with the problem. Hacking the launch condition is not a solution.
Please forward this topic to someone who can read and understand what I want. I want to know WHY the launch condition fails, and therefore I have to know for what things the installer looks for. That the IIS is broken on this machine is clear for me. So your answer is not very helpful, I will look for an other installer with better support. Thx
I'm sorry for this. Our support team tries to offer answers based on best practices and standard Windows guidelines. What you are trying to do seemed like a hack just to make the launch condition work. We usually try to recommend elegant solutions.
To answer your question, IIS is detected by using 3 searches:
1 - a file search for "[SystemFolder]inetsrv\inetinfo.exe"
2 - a file search for "[SystemFolder]inetsrv\w3wp.exe"
3 - a registry search for "HKLM\SYSTEM\CurrentControlSet\Services\W3SVC\DisplayName"
The exact condition is:
(1 OR 2) AND 3
The registry search was added recently, even I wasn't aware of it. File searches have a minimum file version equal to the specified IIS version. For example, inetinfo.exe version 6.0 for IIS 6.0.