5

VisualStudio2005を使用してWindowsインストーラープロジェクトを作成しています。

プロジェクトの[プログラムの追加と削除]にアンインストールオプションがないようにするオプションはありますか?

私の顧客の1人が私にこれをするように頼みました。理由は次のとおりです。インストーラーは既存のプログラムへのパッチであるためです。アンインストール後、パッチが適用されたファイルがアンインストールされるため、プログラムは機能しなくなります。置き換えられたファイルを復元する方法(このインストーラーでは実行できませんでした)を見つける代わりに、アンインストールを無効にすることが可能かどうか疑問に思っています。

4

4 に答える 4

8

Orcaを使用してインストーラーのプロパティテーブルでARPSYSTEMCOMPONENT=1を設定する必要があります(私が知っていることから、Visual Studioで直接行うことはできません)

これは、プログラムが依存関係をインストールし、ユーザーが依存関係を手動でアンインストールすることを望まない場合に一般的に使用されます。ユーザーは、提供した特定のアンインストールスクリプトなどを使用する必要があります。

個人的には、パッチをパッチとして作成し、パッチがアンインストールされないようにします。

また、このようなトリックを使用する方法、理由、および場所についての説明が記載された、Windowsインストーラーの決定的なガイドのコピーを入手することをお勧めします。また、Windowsインストーラーの基礎について非常によく理解し、長期的にはより優れたインストーラーを設計するのに役立ちます。この本のすべての例では、 WindowsインストーラSDKのVisualStudio +無料ツールを使用しています。

編集:ユーザーは、MSIEXECを介して、提供したカスタムアンインストールショートカットを介してアンインストールするための完全な制御を引き続き使用できます。これにより、プログラムの追加と削除(ARP)のエントリを非表示にすることができます。

Edit2:プロパティを追加するためのサンプルVBS(自動ビルドプロセスの一部として追加する場合)

Dim installer, database, view

Set installer = CreateObject("WindowsInstaller.Installer")
Set database = installer.OpenDatabase ("test.msi", 1)

Set view = database.OpenView ("INSERT INTO Property(Property.Property, Property.Value) VALUES('ARPSYSTEMCOMPONENT', '1')")
view.Execute

Set database = Nothing
Set installer = Nothing
于 2009-01-20T23:37:24.967 に答える
3

あるかもしれませんが、正直なところ、それは恐ろしい、恐ろしい考えです。ユーザーが自分のマシンでできることとできないことをユーザーに伝えるのはあなたの仕事ではありません。

また、ユーザーがそうすることができない場合、それは通常管理者によって決定され、ユーザーにはアカウントの種類によって何かをアンインストールする権利が与えられません。これもまた、あなたが影響を与えるべきものではありませんの上。

于 2009-01-20T21:00:37.827 に答える
2

「これはいつもひどい考えだ」などと言うのはあまりにもばかげています。最新のソフトウェアでは、依存関係をアンインストールすると、手元のマシンが完全に完全に機能しなくなることがよくあります。

オープン ソース ソフトウェアの理想は、自分のマシンを壊したい人だけに役立ちます。

于 2009-04-11T20:07:57.973 に答える
2

彼の「ユーザー」が誰であるかはわかりません。これは、エンド ユーザー ソフトウェア向けではない可能性があります。NOC にインストールされる多くのカスタム ソフトウェアを作成します。アンインストール情報を追加/削除に入れません。(私たちは、Visual Studio インストーラーではなく、Nullsoft の NSIS を使用しています...)

于 2009-01-20T21:03:39.100 に答える