InstallShield удаляет файл с помощью VBScript и CustomAction завершается неудачно, когда файла нет - PullRequest
3 голосов
/ 31 августа 2011

При удалении предыдущей установки (которую я собрал с помощью InstallShield 2009), я хотел удалить всю папку, в которой находилась программа, в конце удаления.Я не мог понять, как это сделать, используя Custom Aaction, поэтому, используя приведенный ниже код, я решил удалить файл, как только начнется установка.Это прекрасно работает, если программа уже была установлена ​​... но если она не была установлена ​​ранее, выдает ошибку 1701, потому что, очевидно, папка не существует!Я понятия не имею, как решить эту проблему, и я почти не знаю VBScript.Я начал делать попытку, чтобы просто замаскировать ошибку, но, видимо, ее нет в VBScript.

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

Итак, как я могу вставить пользовательское действие в деинсталляцию в InstallShield или как настроить сценарий VB на удаление только файла, если он существует?Или последний канал, как я могу заставить его не показывать ошибку, когда она не существует ...?

Большое спасибо, это сводит меня с ума!

1 Ответ

4 голосов
/ 31 августа 2011

Вы можете попробовать этот код:

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

Для этого пользовательского действия вы можете затем установить для данных действия (свойство CustomActionData):

[INSTALLDIR]

Таким образом, ваше действие будет удаленокакой бы путь установки ни задавали ваши пользователи.

...