Microsoft KB Archive/190502

= PRB: Missing Files Dialog Box Appears When Running PDW =

Article ID: 190502

Article Last Modified on 1/11/2001

-

APPLIES TO


 * Microsoft Visual Basic 6.0 Professional Edition
 * Microsoft Visual Basic 6.0 Enterprise Edition

-



This article was previously published under Q190502



SYMPTOMS
When running the Microsoft Visual Basic Package and Deployment Wizard (PDW), a dialog titled "Missing Files" appears providing a list of missing files. Files likely to be listed include:

Kernel.dll

User.dll

GDI.dll



CAUSE
The Package and Deployment Wizard scans a project's files for Declare statements to determine if any additional dependency files need to be distributed. If any such files are not found, the user is prompted for the location of the files with the "Missing Files" dialog box.

If any declarations for 16-bit DLLs are found in the project's files, the user is prompted for the location. For example, if the following 16-bit declaration appears in the project the PDW will prompt the user for the location of the Kernel DLL:

Declare Function GetWindowsDirectory Lib "Kernel" _ (ByVal lpBuffer As String, ByVal nSize As Integer) As Integer

This is a very common problem with applications converted from 16-bit Visual Basic to Visual Basic 5.0 or 6.0, or with Visual Basic 4.0 applications that use conditional compilations that have been converted to Visual Basic 5.0 or 6.0. The PDW does not take into consideration the compiler directives when looking for Declare statements, as in the following example:

#If Win32 Then Declare Function GetWindowsDirectory Lib "Kernel32" _ Alias "GetWindowsDirectoryA" _ (ByVal lpBuffer As String, ByVal nSize As Long) As Long #Else Declare Function GetWindowsDirectory Lib "Kernel" _ (ByVal lpBuffer As String, ByVal nSize As Integer) As Integer #End If



RESOLUTION
Convert all 16-bit declarations to their 32-bit equivalents and recompile the project.

- or -

If conditional compilation was used to select between pairs of 16-bit and 32-bit declarations, the conditional compilation statements and 16-bit declarations can be commented out or removed and the project recompiled.

- or -

Click OK in the "Missing Files" dialog; this causes the PDW to ignore the missing files.



STATUS
This behavior is by design.



Steps to Reproduce Behavior
 Create a new Standard EXE project in Visual Basic. Form1 is created by default. Add a new module (Module1) to the project.  In the General Declarations section of Module1, add following code: #If Win32 Then Declare Function GetWindowsDirectory Lib "Kernel32" _ Alias "GetWindowsDirectoryA" _ (ByVal lpBuffer As String, ByVal nSize As Long) As Long #Else Declare Function GetWindowsDirectory Lib "Kernel" _ (ByVal lpBuffer As String, ByVal nSize As Integer) As Integer #End If

 Save the project, compile it, and then exit Visual Basic. Start the Package and Deployment Wizard and proceed to the form entitled "Package and Deployment Wizard - Package Folder." Select a folder and click the Next button. Note that a dialog box entitled "Missing Files" is displayed, with Kernel.Dll in the list of missing files.</li></ol>

<div class="references_section">