当没有文件时,InstallShield 使用 VBScript 和 CustomAction 删除文件失败

Cyp*_*106 4 vbscript windows-installer installshield installshield-2009

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

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

那么,如何将自定义操作粘贴到 InstallShield 中的卸载中,或者如何将 VB 脚本设置为仅删除存在的文件?或者最后一搏,我怎样才能让它在它不存在时不显示错误......?

非常感谢,这让我发疯了!

Cos*_*rvu 5

你可以试试这个代码:

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

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

[INSTALLDIR]
Run Code Online (Sandbox Code Playgroud)

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