2017-11-02 4 views
1

VS2015でソフトウェア用のmsiプロジェクトを作成しました。私はa.Netベースのデスクトップアプリケーションを作った。私の要件は、私は2例を処理したいということです: -msiファイルに新しいバージョンをインストールする際に自動的にアンインストールする方法

の1-私たちのソフトウェアがすでにインストールされ、ユーザーはそれをインストールしようとした場合、それは自動的に既存のソフトウェアをアンインストールして、私が作成したデータベースファイルを(削除する必要があります応用)。

2-インストールされているバージョンが低い場合、アプリケーションをアンインストールしてデータベースファイルをそのまま残してください。私はインストールして、私は私のdllファイルのパスを指定したとtrueにインストーラクラスのプロパティを設定しているところアンインストール用のカスタムアクションを追加した私のセットアッププロジェクトで今すぐ

。このDLLには、私はSystem.Configuration.Install.Installerから継承したクラスを作り、インストール取り扱いしている、beforeInstallは、以下のようにアンインストールします -

public partial class SetupManager : System.Configuration.Install.Installer 
    { 
     public SetupManager() 
     { 
      InitializeComponent(); 
      this.BeforeInstall += SetupManager_BeforeInstall; 
      //this.Committed += new InstallEventHandler(DarkMailInstaller_Committed); 
     } 

     private void SetupManager_BeforeInstall(object sender, InstallEventArgs e) 
     { 
      MessageBox.Show("In Install event"); 
     } 
} 

さて、アンインストール中に、私はDBを削除します。コントロールパネルからアンインストールするとうまくいき、DBファイルも削除されます。

しかし、オーバーライド機能を使用する前に、製品をアップグレードしたい場合は、インストールまたはBeforeInstallのようにエラーが表示されます。「この製品の別のバージョンが既にインストールされています。既存のバージョンの製品、コントロールパネルの追加/削除プログラムを使用します。

は、今私は、インターネット上で検索しましたし、私が私のパッケージコードまたは製品バージョンを更新する場合、その上にインストールすることができる必要がありそうです。今、私は問題以下している: - VS 2015で

1-、私は、製品のバージョンまたはパッケージコードを設定することができ、セットアッププロジェクトでの任意のプロパティを持っていけませんか?

2 - 私はオルカを使用してそれを編集しようとしていますが、私は(更新されたバージョン番号、パッケージのコードと製品コード付き)編集したMSIファイルをインストールしようとした場合でも、その後、私は同じエラーに直面しています。

3-私はなぜこのエラーがBefore-installイベントを実行する前に来るのか分かりませんか?

4-この場合、「RemoveExistingProducts」が役立つことがわかりました。しかし、私はVS2015でこのプロパティ/アクションを見つけることができません。どこで見つけることができますか ?

この問題を解決するのに手伝ってもらえますか? Visual Studioのセットアッププロジェクトで

答えて

0

それがメーカーのような他の特性として、セットアッププロジェクトのRemovePreviousVersionsをプロパティだ、バージョンなど

  1. インクリメントセットアップバージョンのプロジェクト・バージョン、変更を受け入れます。
  2. RemovePreviousVersionsをtrueに設定します。
  3. UpgradeCodeは同じである必要がありますので、変更しないでください。
  4. 更新が必要なバイナリのファイルバージョンを増やします。

ソリューションエクスプローラでセットアッププロジェクトを選択してF4を実行すると、関連するプロパティが表示されます。

Visual Studioはすべてのビルドで新しいものを作成するため、PackageCodeは心配しないでください。

Visual Studioのカスタムアクションはすべて、ファイルがインストールされた後に実行されます(「before」という名前にもかかわらず)ので、インストールの過程に影響を及ぼすことはできません。いずれにせよ、あなたはそれらを必要としません。

新しい顧客に新しくインストールするMSIがあります。また、古い製品がインストールされるときにアップグレードされます.Windows Installerの上書き規則は、アプリケーションによって更新されたデータファイルが置き換えられないことを意味します。

https://msdn.microsoft.com/en-us/library/windows/desktop/aa370531(v=vs.85).aspx

生成されたMSIは、インストールの終わりに向かって、配列決定RemoveExistingProductsのを持っています。基本的には、PackageCodeの内部について心配する必要はありません.Visual Studioはそれらを隠しているためです。

+0

お返事ありがとうございます。わたしにはできる。私は十分な資格を持っていないが、間違いなくそれは私にとって+1です。 – bulunga

関連する問題