MSIとしてパッケージ化された製品があります。以下で説明するように、顧客が既存のバージョンの上に新しいバージョンの製品をインストールすると、カスタムVBSアクションのためにうまく機能しません。私の質問は、MSIを変更して、上からインストールすると常に既存のバージョンが事前に完全にアンインストールされるようにするにはどうすればよいですか?
詳細は次のとおりです。
さまざまな会社にさまざまなバージョンが展開されている製品があります。年に1回程度、各顧客は私の製品の新しいバージョンを受け取り、会社のワークステーションに展開します。展開の責任者は、インストールパッケージにアンインストール手順を含めるのではなく、古いバージョンの上に新しいバージョンをインストールできることを望んでいます。
msiインストールにより、いくつかのファイルが作成され、[CommonApplicationData]\MyAppフォルダーに書き込まれます。実行中、アプリケーションは[CommonApplicationData]\MyAppフォルダーにさらにファイルを作成します。アンインストール中に、これらのファイルをすべて削除する必要があります。それらはmsiによってインストールされないため、自動的にアンインストールされないため、そのフォルダーとその中の他のすべてを削除するvbsスクリプトを作成しました。そのvbsを実行するコマンドをExecuteDeferredに入れました。
...
RemoveFiles
RemoveFolders
CreateFolders
MoveFiles
InstallFiles
PatchFiles
If REMOVE="ALL" Then
REM line below is my custom script
call VBScript From Installation (MyApp_UninstallCleanup)
End
DuplicateFiles
BindImage
CreateShortcuts
...
これまでのところ良好で、インストールおよびアンインストール時に正常に機能します。ただし、既存のバージョンの上に新しいバージョンの製品をインストールすると、次の順序で発生するように見えます。a)新しいバージョンをインストールし、[CommonApplicationData]\MyAppフォルダーと[ProgramFiles]\にさまざまなファイルを作成します。 MyApp ...、古いバージョンのファイルを上書きするb)vbsを実行し、[CommonApplicationData]\MyAppフォルダーを削除する
新しいMSIのアップグレードテーブルに古いバージョンのGUIDがリストされていますが、このカスタムスクリプトを除けば、アップグレードプロセスは問題なく機能しているようです。
製品自体はかなり小さいので、インストーラーが新しいバージョンをインストールする前に常に以前のバージョンを完全に削除しておけば問題ありません。ワークステーションには保持する必要のあるユーザー設定はなく、ファイルサイズも大きくありません。したがって、簡単にするために、変更されたビットだけで更新するのではなく、以前のバージョンをアンインストールする必要があります。
新しいMSIを変更して、以前のバージョンを最初にアンインストールする方法はありますか?
特に、カスタムvbsを含む既存のバージョンのMSIをインストールしている企業がたくさんあります。したがって、ソリューションは、既存のインストール済みmsiに対応できるソリューションである必要があります。
Wise InstallationExpress7.0を使用してMSIを作成しました。
ありがとう!!
(ここにクロスポスト)