cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Tim_Mayert
Level 9

VBscript with DeleteFolder custom action issue

I have an install that will an app that when run will generate a bunch of new folders and files under it main install directory.

So I figured that I would simply create a quick VBScript that will check for the existance of these folders and have them deleted on uninstall.

When I run the custom actions I get the following 1720 error:
"There is a problem with this Windows Install package. A script required for this install to complete could not be run. Contact your support personnel or package vendor. Custom action DeleteFolderCA script error -2146828212, Microsoft VBScript runtime error: Path not found Line 26, Column 2."

Now it states that the Path is not found, but I do not think that is the exact error as my code does a check for the existance of the folder before deleting it. Here is that code snipet:

If (objFSO.FolderExists(oFolder)) Then
MsgBox "The folder " & oFolder & " exists so now to delete it.", vbInformation
objFSO.DeleteFolder(oFolder)
MsgBox "The folder " & oFolder & " should now be deleted.", vbInformation
End If

So what else can cause this error as I use this code in a different project and it seems to work correclty???

Also if there is a better way to handle the deletion of folders and files created by the app then let me know about them.

Thanks,
Labels (1)
0 Kudos
(4) Replies
GarrettDyer
Level 5

Clearly it thinks that the path given in your oFolder variable doesn't exist, so maybe the variable isn't set, or set incorrectly?

I'm not sure how you've constructed your custom action vbscript, obviously, but typically I will set the code up in a standalone script and run it on the target server to see where it gets lost.


  • Put a MsgBox just before it runs that code.
  • Copy your vbscript into a temp folder on the target server
  • Run the vbscript from the temp folder to debug


I use a tool called VBSEdit which uses Microsoft Script Debugger to allow me to walk through the code and query the values of all variables, check whether objects are set correctly, etc. The trial version will allow you to debug, it's drawback is that you have to wait X+1 number of seconds between each stopping point in the debugger.
0 Kudos
Videstra
Level 7

Please post the entire CA. I'd like to see how you are creating the fso...
Not that it is the problem - but if you are creating it like this:

Dim fso
Set fso = WScript.CreateObject("Scripting.Filesystemobject")

it will not work. Only in InstallShield you must do it like this:

Dim fso
Set fso = CreateObject("Scripting.Filesystemobject")

note that it drops the WScript.

Now that may not be your problem, but I thought I'd mention it since it's a very common mistake for people creating CA's in VBScript.

Des
0 Kudos
Tim_Mayert
Level 9

Here is the entire script that I am using:

' ********************************************
Dim sInstallDirectory

' Get the property that contains the value of the folder to delete.
sInstallDirectory = Session.Property("CustomActionData")
' MsgBox "The Install Dir is: " & sInstallDirectory, vbInformation

' Make sure there is a trailing backslash at the end of the path
If Mid(sInstallDirectory, Len(sInstallDirectory), 1) <> "\" Then
sInstallDirectory = sInstallDirectory & "\"
End If
' MsgBox "The Install Dir is:" & sInstallDirectory, vbInformation

Dim objFSO
Dim oFolder

' Just to test, set the folder, under the INSTALLDIR to verify the deletion works. Will later be the entire customactiondata property.
oFolder = sInstallDirectory & "liferay-portal-6.0.1\tomcat-6.0.26\webapps\SAMServer-0.1.0-SNAPSHOT"
' MsgBox "The folder to delete is:" & oFolder, vbInformation

Set objFSO = CreateObject ("Scripting.FileSystemObject")

' If the folder exists then have it deleted.
If (objFSO.FolderExists(oFolder)) Then
' MsgBox "The folder " & oFolder & " exists so now to delete it.", vbInformation
objFSO.DeleteFolder oFolder, true
' MsgBox "The folder " & oFolder & " should now be deleted.", vbInformation

Else
' MsgBox "The folder: " & oFolder & " does not exists.", vbInformation
End If
' ********************************************

What I do not understand is that it does find the folder. It does go into the If statement:
If (objFSO.FolderExists(oFolder)) Then

So if it can find the folder why does it not delete the folder?

I have a test install that have the exact same custom action and therefore I set it to delete the same folder and it works correctly. So either the folder is locked during uninstall and therefore it can not delete it, but give the bogus message about Path not found, or something else if failing and given this message.

So if anyone has any clues let me know.

Thanks,
0 Kudos
GarrettDyer
Level 5

I ran the script and when I had a trailing backslash on my test folder path, it failed. When I removed it, it removed the folder without error.

It's kind of strange, because when I was working with vbscript quite a bit a while back, I thought the general rule when dealing with folders was to always include the trailing backslash.

Try getting rid of that in your path and see if that helps...
0 Kudos