2011-06-23 14 views
1

以前にアプリケーションをリリースしました。その後、アプリケーションの新しいバージョンがリリースされましたが、アプリケーション名は異なります。しかし、これらのアプリケーションは両方とも、同じプログラムフォルダにファイルを配置します。しかし、アンインストールプログラムには2つの異なるバージョンがリストされています。プログラムでCを使用してプログラムをアンインストールする#

新しいバージョンをリリースしました。私たちはユーザーのPCから最初のバージョンをアンインストールしたいと思っています。どのように私はこれをC#を使用して達成することができます。私たちはWindows 7 64ビットを使用しています(アプリケーションは32ビットで、x86フォルダにインストールされています)。

私は

キーアプリケーションのどちらも親切に私を助けてアプリケーションのセットアップを持っていけません。

+0

「msiexec/u」を呼び出すことはできませんか? –

+0

これらの異なるバージョンはどのようにインストールされていますか? msiを使用しますか? msisの製品コードとアップグレードコードを知っていますか? –

答えて

0

はCOMいるWindowsInstallerクラスを見てください。アクセスを取得するには、WindowsInstallerクラスへの参照を追加する必要があります。ここからMSIをブラウズし、必要に応じてアクションを実行することができます。私は私のポストビルドでこれを使ってアーカイブを修正して、Visual Studioの文書化されていない機能を修正しました。

// Create an Installer instance 
MsiInstaller = Activator.CreateInstance(Type.GetTypeFromProgID("WindowsInstaller.Installer")) as WindowsInstaller.Installer; 
// Open the msi file for Read/Write 
MsiDatabase = MsiInstaller.OpenDatabase(MsiFile.FullName, MsiOpenDatabaseMode.msiOpenDatabaseModeTransact); 
1

アプリケーションが早いバージョン(別の名前)を検出できない場合は、恐らくこれらの2つのアプリケーションが干渉する場所からデータを削除する必要があります。 File.Delete();でそれを行うことができますが、これらのファイルがアプリケーションの権限を持たない場所にある場合は、マニフェストファイルを追加して強制的にAdminとして実行し、その行を置き換える必要があります。

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
関連する問題