Microsoft KB Archive/292039

From BetaArchive Wiki

Article ID: 292039

Article Last Modified on 8/15/2002



APPLIES TO

  • Microsoft Application Center 2000 Standard Edition



This article was previously published under Q292039

SYMPTOMS

Event ID: 5142
Source: Application Center - Replication Session
Description: Unable to export COM+ application
Event Type: Error

Error occurred while attempting to export COM+ Application %Path% (ID:%Key%). This occurred during session %ReplicationID% and job %ReplicationJobID%. Status is 0x80070003 The system cannot find the path specified.

CAUSE

The DLL path (in the general component properties in Component Services) of the effected COM+ component is missing. The DLL path is the path in the file system to the dynamic link library (DLL) file.

RESOLUTION

To resolve this problem, obtain the latest service pack for Windows 2000. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

260910 How to Obtain the Latest Windows 2000 Service Pack


This fix is included with the fixes that are described in the following Microsoft Knowledge Base article:

302845 INFO: Availability of Windows 2000 Post-Service Pack 2 COM+ Hotfix Rollup Package 14



WORKAROUND

You can use any of the following methods to work around this problem:

  • Change the instancing of the effected components to allow public instanciation.

    For example, in Microsoft Visual Basic 6.0, change the instancing of the effected class modules to MultiUse or GlobalMultiUse, recompile, and then reregister with Component Services.
  • Manually install the components. Export the COM+ package from Component Services (this creates .msi and .cab files), copy the exported files to the target server, and then execute the .msi file.
  • Run the following script to remove the component entries in the COM+ catalog that cause this problem. (Removing these components should not affect the operation of your applications because these catalog entries serve no purpose.)

    '********************************************************************
    '*
    '* File:           acCleanPublicNotCreatable.VBS
    '* Created:        February 2001
    '*
    '*  Main Function:  Deletes VB PublicNotCreatable components from COM+ catalog
    '*                  This corrects a problem that may cause AC2000 COM+ deployment failures
    '*
    '* Copyright (C) 2001 Microsoft Corporation
    '*
    '********************************************************************
    Option Explicit
    
    '  Open a session with the catalog
    '  Instantiate a COMAdminCatalog object
    Dim Catalog ' As COMAdminCatalog
    Set Catalog = CreateObject("COMAdmin.COMAdminCatalog")
    
    '  First get the "Applications" collection from the catalog,
    '  representing it with the generic COMAdminCatalogCollection
    Dim Applications ' As COMAdminCatalogCollection
    Set Applications = Catalog.GetCollection("Applications")
    Applications.Populate
    
    Dim app ' As COMAdminCatalogObject
    Dim Components ' As COMAdminCatalogCollection
    Dim comp ' As COMAdminCatalogObject
    Dim fUpdate ' As Boolean
    Dim i ' As Integer
    
    ' Walk Applications Collection
    
    For Each app In Applications
        'wscript.echo app.Name
    
        ' Get Components collection for current application
        Set Components = Applications.GetCollection("Components", app.Key)
        Components.Populate
    
        fUpdate = False
        i = 0
        ' Walk Compnents collection checking for empty Dll Path (PublicNotCreatable)
        For Each comp In Components
            ' Wscript.echo Components.Item(i).Name
            If comp.Value("DLL") = "" Then
                fUpdate = True
                wscript.echo "Removing " & comp.Name & " " & comp.Key & " from Application " & app.Name
                Components.Remove i
            Else
                i = i + 1
            End If
        Next
        If fUpdate Then Components.SaveChanges
    Next
                        


STATUS

Microsoft has confirmed that this is a bug in Component Services. This problem was first corrected in Windows 2000 Service Pack 3.

MORE INFORMATION

Steps to Reproduce Behavior

Create a COM+ component with a missing DLL path.

  1. Create a new ActiveX DLL project in Visual Basic 6.0.
  2. Create two class modules. Set instancing of one to PublicNotCreatable and the other to MultiUse.


NOTE: At least one class module requires instancing of MuliUse or GlobalMultiUse in order to compile.

  1. Compile into a dynamic link library (DLL).
  2. In Component Services, create an empty application.
  3. Add the compiled DLL to the new empty application in Component Services.


NOTE: The DLL path will be missing from the component, which was set to instancing of PublicNotCreatable.

  1. Attempt to deploy the COM+ application by using the Application Center 2000 New Deployment Wizard.



Additional query words: kbIISCom

Keywords: kbbug kbfix kbwin2000sp3fix KB292039