2012-07-04 14 views
5

私はMSIとしてパッケージ化された製品を持っています。私の顧客が私の製品の新しいバージョンを既存のバージョンの上にインストールすると、以下に説明するように、カスタムVBSアクションのためうまく動作しません。私の質問は、どのように私は自分のMSIを変更することができますので、上にインストールすると常に既存のバージョンを完全にアンインストールしますか?msi installの一部として以前のバージョンをアンインストールするには?

詳細は以下のとおりです。

私は、様々な異なる企業で展開バージョンの様々な製品を持っています。年に約1回、私の顧客のそれぞれが新しいバージョンの製品を受け取り、自社のワークステーションに展開します。導入担当者は、インストールパッケージにアンインストール手順を含めるのではなく、古いバージョンの上に新しいバージョンをインストールすることを好むでしょう。

msi installは[CommonApplicationData] \ MyAppフォルダにいくつかのファイルを作成して書き込みます。実行中に、アプリケーションは[CommonApplicationData] \ MyAppフォルダーにさらに多くのファイルを作成します。アンインストール中にこれらのファイルをすべて削除する必要があります。彼らはmsiによってインストールされていないので、自動的にアンインストールされないので、そのフォルダとその中の他のものを削除するvbsスクリプトを作成しました。

... 
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 
... 

これまでのところは良いと&アンインストールをインストールするときに、それが正常に動作します:私はExecuteDeferredでそのVBSを実行するコマンドを置きます。しかし、私の製品の新しいバージョンを既存のバージョンの上にインストールすると、次のような順番で起こります。 a)新しいバージョンのインストール、[CommonApplicationData] \ MyAppフォルダ内のさまざまなファイルの作成、[Program Files] \ MyApp ...旧バージョン のファイルを上書きするb)[CommonApplicationData] \ MyAppフォルダを削除してvbsを実行する

新しいMSIのアップグレードテーブルに記載されている古いバージョンのGUIDがあります。このカスタムスクリプトとは別に、アップグレードプロセスは正常に機能しているようです。

製品自体はかなり小さいので、新しいバージョンをインストールする前にインストーラが以前のバージョンを完全に削除しても問題ありません。ワークステーションに保持する必要のあるユーザー設定はなく、ファイルサイズは大きくありません。したがって、わかりやすくするために、変更されたビットだけで更新するのではなく、以前のバージョンをアンインストールする必要があります。

新しいMSIを変更して以前のバージョンを最初にアンインストールする方法はありますか?

特に、私はカスタムバージョンを含むMSIの既存のバージョンをインストールしている多くの企業があります。したがって、ソリューションは実際にインストールされている既存のmsiに対処できるものでなければなりません。

私はWise Installation Express 7.0を使用してMSIを作成しました。

ありがとうございます!

hereクロスポスト)InstallInitializeアクション前

答えて

5

スケジュールRemoveExistingProductsアクション:この場合

、インストーラはまったく新しいアプリケーションをインストールする前に、古いアプリケーションを削除します。これは、再利用されるすべてのファイルを再コピーする必要があるため、アクションの非効率的な配置です。あなたがインストールするための標準的なワイズテンプレートを使用している場合は、RemoveExistingProductsアクションがInstallExecuteシーケンスの最後に配列決定される

シマンテックフォーラムで

1

回答from EdT。技術的にはこれは最も効率的な配置ですが、古いものをアップグレードするために新しいパッケージを作成するときにUpgradeSyncを非常に慎重に実行しない限り、最終的な結果は通常ファイルやその他の異常があります。

InstallExistingProductsアクションが再インストールされ、InstallValidateとInstallInitializeの間で実行されるように修正されました。これにより、新しいバージョンがインストールされる前に古いアプリが完全に削除されます。

このアクションを配置するオプションの詳細については、ヘルプファイルMSI.CHMの「RemoveExistingProducts」を参照してください。

関連する問題