Docker Community Forums

Share and learn in the Docker community.

Is it possible to create a Docker Windows with ASP Classic and VB6 DLL on Complus

I’m trying to create a container with an ASP classic using VB6 DLL at Complus.
The idea is to migrate one legacy ASP+ComPlus system to docker.

There is any way to create this?

My docker file:

FROM microsoft/dotnet-framework:3.5
SHELL [“powershell”]
RUN Install-WindowsFeature Web-Asp-Net ;
Install-WindowsFeature Web-Server ;
Install-WindowsFeature Web-WebServer ;
Install-WindowsFeature Web-Common-Http ;
Install-WindowsFeature Web-Default-Doc ;
Install-WindowsFeature Web-Dir-Browsing ;
Install-WindowsFeature Web-Http-Errors ;
Install-WindowsFeature Web-Static-Content;
Install-WindowsFeature Web-Health ;
Install-WindowsFeature Web-Http-Logging ;
Install-WindowsFeature Web-Log-Libraries ;
Install-WindowsFeature Web-ODBC-Logging ;
Install-WindowsFeature Web-Http-Tracing;
Install-WindowsFeature Web-Performance ;
Install-WindowsFeature Web-Stat-Compression ;
Install-WindowsFeature Web-Security ;
Install-WindowsFeature Web-Filtering ;
Install-WindowsFeature Web-Basic-Auth ;
Install-WindowsFeature Web-Windows-Auth ;
Install-WindowsFeature Web-App-Dev ;
Install-WindowsFeature Web-Net-Ext ;
Install-WindowsFeature Web-Net-Ext45 ;
Install-WindowsFeature Web-ASP ;
Install-WindowsFeature Web-ISAPI-Ext ;
Install-WindowsFeature Web-Mgmt-Tools ;
Install-WindowsFeature Web-Mgmt-Compat ;
Install-WindowsFeature Web-Metabase ;
Install-WindowsFeature Web-Lgcy-Scripting ;
Install-WindowsFeature Web-WMI ;
Install-WindowsFeature Web-Scripting-Tools;
mkdir c:\Avanade\ComPlus;
Remove-Item -Recurse C:\inetpub\wwwroot*;

WORKDIR /inetpub/wwwroot

COPY content/wwwroot .

WORKDIR /Comp/ComPlus

COPY content/DLLs .
COPY Create-ComPlus-Application.ps1 .

RUN .\Create-ComPlus-Application.ps1

$ApplicationUser = “AdminUser”;
$UserPassword = “@PwdAdmin”;

New-LocalUser $ApplicationUser -Password (ConvertTo-SecureString -AsPlainText $UserPassword -Force) -FullName “Legacy COM Plus” -Description “Local Administrator”;

$comAdmin = New-Object -comobject COMAdmin.COMAdminCatalog;
$apps = $comAdmin.GetCollection(“Applications”);

$newComPackageName = “DockerComplus”;

$appExistCheckApp = $apps | Where-Object {$_.Name -eq $newComPackageName};

$appExistCheckAppName = $appExistCheckApp.Value(“Name”);
“This COM+ Application already exists : $appExistCheckAppName” ;

$newApp1 = $apps.Add();
$newApp1.Value(“Name”) = $newComPackageName;
$newApp1.Value(“ApplicationAccessChecksEnabled”) = 0; # Security Tab, Authorization Panel, "Enforce access checks for this application
$newApp1.Value(“ApplicationAccessChecksEnabled”) = $false;
#$newApp1.Value(“Identity”) = “nt authority\localservice”;

$newApp1.Value(“Identity”) = $ApplicationUser
$newApp1.Value(“Password”) = $UserPassword

$saveChangesResult = $apps.SaveChanges();
“Results of the SaveChanges operation : $saveChangesResult”;

$comAdmin.InstallComponent($newComPackageName, “c:\AspTut\AspTut.dll”, $null, $null);

The last line I received a error:
Errors occurred accessing one or more objects - the ErrorInfo collection may have more detail (Exception from HRESULT:
At line:1 char:1

  • $comAdmin.InstallComponent($newComPackageName, "c:\Avanade\AspTut\Asp …
  •   + CategoryInfo          : OperationStopped: (:) [], COMException
      + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException

Did you ever get this addressed? I’m running into the same issue…

This is the complete error message:

PS C:> try {comAdmin.InstallComponent("appname","C:\DLLpath\DLLname.dll","","")}catch{_.exception |form
t-list -force}

ErrorCode : -2146368511 a
Message : Errors occurred accessing one or more objects - the ErrorInfo collection may have more detail a
(Exception from HRESULT: 0x80110401)
Data : {System.Management.Automation.Interpreter.InterpretedFrameInfo}
InnerException :
TargetSite : Void CheckThrowException(Int32, System.Management.Automation.ComInterop.ExcepInfo ByRef,
System.Management.Automation.ComInterop.ComMethodDesc, System.Object, UInt32)
StackTrace : at System.Management.Automation.ComInterop.ComRuntimeHelpers.CheckThrowException(Int32 hresult,
ExcepInfo& excepInfo, ComMethodDesc method, Object args, UInt32 argErr)
at CallSite.Target(Closure , CallSite , ComObject , String , String , String , String )
at System.Dynamic.UpdateDelegates.UpdateAndExecute5[T0,T1,T2,T3,T4,TRet](CallSite site, T0 arg0,
T1 arg1, T2 arg2, T3 arg3, T4 arg4)
at System.Management.Automation.Interpreter.DynamicInstruction`6.Run(InterpretedFrame frame)
at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame
HelpLink :
Source : System.Management.Automation
HResult : -2146368511

This is in the event logs:

Unable to load DLL C:\DLLpath\DLLName.dll

Process Name: dllhost.exe
Comsvcs.dll file version: ENU 2001.12.10941.16384 shp during component registration. Unable to validate DLL entry points.

EventID 5488

Did you ever get this addressed? I’m running into the same issue…

I finally found the answer to that error

you need to register the DLL in order to install it on to Component