卸载以前的安装(我使用InstallShield 2009构建)时,我想删除该程序在卸载结束时所在的整个文件夹。我不知道如何使用“自定义动作”执行此操作,因此使用下面的代码,我决定在安装开始后立即删除该文件。如果该程序已经安装,则可以正常工作...但是如果之前未安装过该程序,则会抛出错误1701,因为显然该文件夹不存在!我不知道如何解决此问题,我几乎不了解VBScript。我开始进行尝试捕获以掩盖错误,但显然在VBScript中不存在。

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


因此,或者如何将“自定义操作”粘贴到InstallShield的卸载中,或者如何将VB脚本设置为仅删除文件(如果存在)?还是最后一个沟渠,当它不存在时,如何使它不显示错误...?

非常感谢,这使我发疯!

最佳答案

您可以尝试以下代码:

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


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

[INSTALLDIR]


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

10-04 09:56