PDA

View Full Version : IIS issues on Vista (Default document and App pool)



SPFPlus
07-04-2007, 07:38 PM
I have 2 issues with Installshield 2008 and installing the compiled installer on Vista.

1. I have typed in Default.aspx in the documents section of IIS. But after the installation, all the virtual directories are setup, EXCEPT the default documents. The values dont seem to copy into the Default documents section. Is this a bug with Installshield??

2. In Vista IIS7, there is "Classic .NET" and "Integrated" application pools. How do I choose which one to install with Installshield 2008?

SPFPlus
07-11-2007, 11:39 PM
hmm...... any help??

davidh
07-23-2007, 11:20 AM
The default document setting should be working. I can't see any problems with it. Perhaps search the msi log for the default document name (in your case, Default.aspx) to see if that gives more information. Maybe you need to look at the properties for the application and not the virtual directory? Or you need to refresh the IIS manager?

kwabbernoot
05-07-2008, 10:05 AM
Any news on question number two:
How to choose within Installshield 2008 to deploy your application pool in "Classic" or "Integrated" as the managed pipeline mode?

alphacz
06-09-2008, 02:55 PM
I am also hitting item #2 and am not sure how to fix it... kwabbernoot were you ever able to resolve this from your end? (How do you set an application to use the Classic .NET AppPool?).

-Chris

kwabbernoot
06-10-2008, 06:58 AM
Found no solution.
We now use the integrated pipeline mode by default.

Robisupside
06-12-2008, 01:02 PM
We have noticed the same thing where default documents are not populated on virtual directories in Windows 2008 server and we have found no way to set IIS 7 managed pipeline mode to classis through installation. I'm not sure how the marketing material for Installshield 2008 can say full support for Windows 2008 and IIS 7 when these basic attributes are overlooked and or simply fail.

nitsev
11-25-2008, 03:14 AM
I believe the only way to set the pipeline mode is to use a custom action that calls appcmd. There are very many limitations to the IIS 7 support in IS 2009 I am afraid. For example you cannot set the ASP.NET version on an app. pool either.

I created a CA in a MSI DLL with the following code (Delphi). It should be fairly easy to translate to any other language


function SetAppPoolPipelineMode(hInstall: MSIHANDLE): UINT; stdcall;
var
cmdLine, params:string;
begin
try
cmdLine := IncludeTrailingPathDelimiter(GetSystemRoot) + 'system32\inetsrv\appcmd.exe';
params := 'set apppool "Prodacapo" /managedPipelineMode:Classic';
if FileExists(cmdLine) then
LaunchAppAndWait(hInstall, cmdLine, params, '')
else
MsiLogInfo(hInstall, Format('Could not find %s', [cmdLine]));
except
on E:Exception do
MsiMessage(hInstall, mdtError, mdbOK, E.Message);
end;
result := ERROR_SUCCESS;
end;

The GetSystemRoot function looks like this


function GetSystemRoot: string;
begin
with TRegistry.Create do
try
RootKey := HKEY_LOCAL_MACHINE;
OpenKeyReadOnly('SOFTWARE\Microsoft\Windows\CurrentVersion');
result := ReadString('SystemRoot');
if result = '' then
begin
CloseKey;
OpenKeyReadOnly('SOFTWARE\Microsoft\Windows NT\CurrentVersion');
result := ReadString('SystemRoot');
end;
finally
Free;
end;
end;


The LaunchAppAndWait is an internal function I wrote that simply executes the cmdline with the parameters and runs in the installDir.
You need to replace AppPoolName in the code with the name of your app. pool. Since the function checks for the existence of appcmd.exe I always execute it regardless of OS. AppCmd is only available on IIS 7 system (Windows Vista and Windows Server 2008) and if it's not there, the system is not IIS 7 anyway. Systemroot is by default %systemroot%\system32\inetsrv

I hope this can help someone.

Robisupside
11-25-2008, 11:48 AM
Thanks Nitsev, we ended up using a custom action calling appcmd similarly to how you've described (I should have posted for others as well). As you suggested IIS7 support does appear limited in the tool despite all their marketing material suggestions of "full support for IIS7).

In my earlier post regarding default document not being set, we found that the tool was creating a web.config in our application directory with the default document xml, unfortunately we publish our own web.config just after that (renaming the existing) without that configuration (we ended up adding it to the one we publish to resolve the issue).

Hope that helps someone down the line.

Cheers all,


Rob

Naveed
12-23-2009, 02:37 PM
Hi Rob,

We got to the solution of renaming web.config by hit and trial. For some reason installer created on remote machine failed to install virtual directory and rolled back. We are using IS 2010 Premier and Windows Server 2008.

However, If I remove or clear the web.config, then virtual directory is created successfully. Later on we replace the web.config with correct one.

You know any proper fix for this work around?

Robisupside
12-31-2009, 02:08 PM
Hi Naveed,

We've had to continue to use the workaround, not sure what a proper fix would be to affect the custom actions built into installshield publishing the default document and other configuration settings when installing to vista\2008 server.

I think a problem you might be having is that the web.config that exists prior to the create v-dir action has maybe invalid xml or is not in the correct format for IIS7 and it causes the action to fail. Make sure to check the schema for configuration elements in IIS 7 and run the validation in a site with your config to see what might be missing or incorrect.

<system.webServer>
... (other settings)
<validation validateIntegratedModeConfiguration="true" />
</system.webServer>

Hope that helps.

Happy New Year.


Rob