4

以前のインストール(InstallShield 2009を使用してビルドしたもの)をアンインストールするときに、アンインストールの最後にプログラムがあったフォルダー全体を削除したかったのです。カスタムアクションを使用してそれを行う方法を理解できなかったので、以下のコードを使用して、インストールが開始されたらすぐにファイルを削除することにしました。プログラムがすでにインストールされている場合、これは正常に機能します...ただし、以前にインストールされていない場合は、明らかにフォルダーが存在しなかったため、エラー1701がスローされます。この問題を修正する方法がわかりません。VBScriptもほとんどわかりません。エラーを確認するためにtry-catchを実行し始めましたが、VBScriptには存在しないようです。

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

では、InstallShieldのアンインストールにカスタムアクションを貼り付けるにはどうすればよいですか、またはファイルが存在する場合にのみファイルを削除するようにVBスクリプトを設定するにはどうすればよいですか?または最後の溝、それが存在しないときにエラーを表示しないようにするにはどうすればよいですか...?

どうもありがとう、これは私を夢中にさせています!

4

1 に答える 1

5

このコードを試すことができます:

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

このカスタムアクションでは、アクションデータ(CustomActionDataプロパティ)を次のように設定できます。

[INSTALLDIR]

このように、アクションはユーザーが設定したインストールパスを削除します。

于 2011-08-31T19:20:38.643 に答える