InstallShield使用VBScript&删除文件没有文件时CustomAction失败

时间:2011-08-31 18:55:52

标签: vbscript windows-installer installshield installshield-2009

卸载以前的安装(我使用InstallShield 2009构建)时,我想删除卸载结束时程序所在的整个文件夹。我无法弄清楚如何使用自定义Aaction,所以使用下面的代码,我决定在安装开始后立即删除该文件。如果程序已经安装,这可以正常工作......但如果之前没有安装它,它会抛出一个错误1701,因为很明显,该文件夹不存在!我不知道如何解决这个问题,我几乎不知道VBScript。我开始尝试使用try-catch来掩盖错误,但显然在VBScript中不存在。

Dim fso, Folder2Delete
Folder2Delete =  "C:\Program Files\MyProgramDir"
Set fso = CreateObject("Scripting.FileSystemObject")
fso.DeleteFolder(Folder2Delete)

那么,如何将自定义动作粘贴到InstallShield中的卸载中,或者如何将VB脚本设置为仅删除文件(如果存在)?或者最后一个沟渠,如何在不存在的情况下让它不显示错误......?

非常感谢,这让我发疯!

1 个答案:

答案 0 :(得分:4)

您可以尝试以下代码:

Dim fso, Folder2Delete
Folder2Delete = Session.Property("CustomActionData")
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(Folder2Delete) Then
  fso.DeleteFolder(Folder2Delete)
End If

对于此自定义操作,您可以将操作数据(CustomActionData属性)设置为:

[INSTALLDIR]

这样您的操作就会删除用户设置的任何安装路径。