4

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

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

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

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

4

1 回答 1

5

You can try this code:

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

For this custom action you can then set the action data (CustomActionData property) to:

[INSTALLDIR]

This way your action will delete whatever installation path your users set.

于 2011-08-31T19:20:38.643 回答