Just tried to build mod_aspdotnet (latest svn repo) for Apache 2.2.2 with VS.NET 2002.
set APACHE22_PATH=C:\www\Apache22
devenv mod_aspdotnet.sln /useenv /build "Release 2.2" /project installer
...
The application for project 'E:\build\mod_aspdotnet\installer.ism' is not installed.
Make sure the application for the project type (.ism) is installed.
Invalid project
...
So where do I get InstallShield. The VS.NET 2002 install cds do not seem to have it -- unless it is in web tools -- which is greyed out -- no IIS on my system.
Ok. So what does the msi installer do anyways that can not be done manually? Lets skip that garbage and go straight to the source...
C:\build\mod_aspdotnet>devenv mod_aspdotnet.sln /useenv /build "Release 2.2" /project mod_aspdotnet
Microsoft (R) Development Environment Version 7.00.9466.
Copyright (C) Microsoft Corp 1984-2001. All rights reserved.
The application for project 'E:\build\mod_aspdotnet\installer.ism' is not installed.
Make sure the application for the project type (.ism) is installed.------ Build started: Project: Apache.Web, Configuration: Release 2.2 Win32 ------
Compiling Apache.Web.Helpers
Compiling...
WorkerRequest.cpp
AssemblyInfo.cpp
Generating Code...
Compiling resources...
Linking...
Exporting .tlb
Types registered successfully
Assembly exported to 'e:\build\mod_aspdotnet\Release22\Apache.Web.tlb', and the type library was registered successfully
Types unregistered successfully
Build log was saved at "file://e:\build\mod_aspdotnet\Release22\BuildLog.htm"
Apache.Web - 0 error(s), 0 warning(s)
------ Build started: Project: mod_aspdotnet, Configuration: Release 2.2 Win32 ------
Compiling...
mod_aspdotnet.cpp
Compiling resources...
Linking...
Creating library ..\Release22/mod_aspdotnet.lib and object ..\Release22/mod_aspdotnet.exp
Build log was saved at "file://e:\build\mod_aspdotnet\Release22\BuildLog.htm"
mod_aspdotnet - 0 error(s), 0 warning(s)
---------------------- Done ----------------------
Build: 2 succeeded, 0 failed, 0 skipped
Looks like that built everything successfully -- mod_aspdotnet.lib, mod_aspdotnet.so, Apache.Web.dll
The question is, what now?...
I know nothing about the following...
Deployment Notes
----------------
YOU MUST test both the .NET Framework SDK, as well as the .NET Framework
Runtime environments. A number of internal behaviors vary between these
two releases, and Exceptions, destruction, construction and failure cases
will manifest differently between the two variants.
ASP.NET requires the Apache::Web::Request object to be registered in
the Global Assembly Cache in order to instantiate it's host container.
The Debug build will do so automatically, copying mod_aspdotnet.so + .pdb
into the $(APACHE_PATH)\modules directory, for testing.
Apache.Web.dll + .pdb files are copied into $(APACHE_PATH)\bin
so that it can discover libapr.dll, libaprutil.dll and libhttpd.dll when
running in the System.Web.Hosting's AppDomain. Apache.Web.dll is then
registered and installed into the Global Assembly Cache by the Debug build's
post-build custom command.
In order to install a reference into the Global Assembly Cache (for testing
the release build instead of the debug build) use;
regasm d:\path-to-apache\bin\Apache.Web.dll
gacutil /ir Apache.Web.dll FILEPATH d:\path-to-apache\bin\Apache.Web.dll Apache.Web
This installs Apache.Web.dll by reference to the built assembly.
This may *NOT* work on an end-user's machine without the .NET Platform SDK.
Those tools [regasm/gacutil] were not officially going to be distributed
with the retail .NET runtime redistributables. Instead, the .msi installer,
has all details for registering the Apache.Web assembly into the Global
Assembly Cache, is entrusted to install Apache.Web to the GAC for end-users.
From the little that I can pick up on, the following commands need to be executed on the user's system...
> regasm C:\www\Apache22\bin\Apache.Web.dll
> gacutil /ir Apache.Web.dll FILEPATH C:\www\Apache22\bin\Apache.Web.dll Apache.Web
C:\build\mod_aspdotnet>regasm /?
Microsoft (R) .NET Framework Assembly Registration Utility 1.0.3705.6018
Copyright (C) Microsoft Corporation 1998-2001. All rights reserved.
Syntax: RegAsm AssemblyPath [Options]
Options:
/unregister Unregister types
/tlb[:FileName] Export the assembly to the specified type library
and register it
/regfile[:FileName] Generate a reg file with the specified name
instead of registering the types. This option
cannot be used with the /u or /tlb options
/codebase Set the code base in the registry
/registered Only refer to already registered type libraries
/nologo Prevents RegAsm from displaying logo
/silent Silent mode. Prevents displaying of success messages
/verbose Displays extra information
/? or /help Display this usage message
C:\build\mod_aspdotnet>gacutil /?
Microsoft (R) .NET Global Assembly Cache Utility. Version 1.0.3705.0
Copyright (C) Microsoft Corporation 1998-2001. All rights reserved.
Usage: Gacutil <option> [<parameters>]
Options:
/i
Installs an assembly to the global assembly cache. Include the
name of the file containing the manifest as a parameter.
Example: /i myDll.dll
/if
Installs an assembly to the global assembly cache and forces
overwrite if assembly already exists in cache. Include the
name of the file containing the manifest as a parameter.
Example: /if myDll.dll
/ir
Installs an assembly to the global assembly cache with traced
reference. Include the name of file containing manifest,
reference scheme, ID and description as parameters
Example: /ir myDll.dll FILEPATH c:\apps\myapp.exe MyApp
/u[ngen]
Uninstalls an assembly. Include the name of the assembly to
remove as a parameter. If ngen is specified, the assembly is
removed from the cache of ngen'd files, otherwise the assembly
is removed from the global assembly cache
Examples:.
/ungen myDll
/u myDll,Version=1.1.0.0,Culture=en,PublicKeyToken=874e23ab874e23ab
/ur
Uninstalls an assembly reference. Include the name of the
assembly, type of reference, ID and data as parameters.
Example: /ur myDll,Version=1.1.0.0,Culture=en,PublicKeyToken=874e23ab874e23
ab
FILEPATH c:\apps\myapp.exe MyApp
/uf
Forces uninstall of an assembly by removing all install references
Include the full name of the assembly to remove as a parameter..
Assembly will be removed unless referenced by Windows Installer.
Example: /uf myDll,Version=1.1.0.0,Culture=en,PublicKeyToken=874e23ab874e23
ab
/l
Lists the contents of the global assembly cache. Allows optional
assembly name parameter to list matching assemblies only
/lr
Lists the contents of the global assembly cache with traced
reference information. Allows optional assembly name parameter
to list matching assemblies only
/cdl
Deletes the contents of the download cache
/ldl
Lists the contents of the downloaded files cache
/nologo
Suppresses display of the logo banner
/silent
Suppresses display of all output
/?
Displays this help screen
Looks like both are under .NET Framework Runtime -- I think.
Guess I will try it out later and report back.
If everything works, I'll post the mod_aspdotnet files on the d/l page for Apache 2.2.x.