Windowsインストーラのベストプラクティス:管理者、非管理者、またはその両方?

私のアプリケーションの1つにWindows版があり、NSISを使用してインストーラを作成し、現在のバージョンを「プログラムファイル」にインストールします。

インストーラが管理者として実行され、一部のユーザー(エンタープライズPC ...)に問題が発生する可能性があることを理解しています。

この種のインストーラのWindowsのベストプラクティスは何ですか?ユーザーを強制的に管理者にする他の場所にインストールするオプションを提供しますか?

(私はUNIX/Macの人だから、Windowsのアプリケーションについては本当に福音を知らない)

Here is the NSIS script in case someone want to have a look: https://github.com/nickbnf/glogg/blob/master/glogg.nsi

2
追加された
ビュー: 2

3 答え

Windowsでは一般に、ソフトウェアをインストールするには管理者アクセス権が必要です。企業は実際にこの機能を好んでいます。特定の人が会社の許可なくソフトウェアをインストールすることができないからです。ソフトウェアは通常、プログラムファイルまたはプログラムファイル(x86)ディレクトリに移動する必要があり、意図的に管理者アクセスが必要です。

このルールにはいくつかの例外がありますが、まれです。ユーザーあたりのソフトウェアを安全にインストールするには、次のことを保証する必要があります。

1)インストーラは、Program Files(または他のマシン全体の場所)以外の場所から機能することができます。

2)ソフトウェア自体はマシン全体の場所に書き込まれません。

3)マシン全体のレジストリの場所(HKEY_LOCALMACHINEなど)には何も書き込まない。

正直なところ、これはもっと複雑な問題です。それは本当にあなたがやっていることにかかっています。クリック一回インストールで逃げることができれば、それが最善の策かもしれません。部分的な信頼でこれを行うことができます。つまり、管理者のアクセスを必要とせず、ユーザー。

1
追加された
同意しません。ユーザーごとのインストールを許可しないと、IT部門(つまり私!)の作業が増え、実際にはセキュリティは向上しません。ユーザーごとのソフトウェアがユーザーごとに実行されるため、ユーザーが実行できないことはありません別のやり方をする。とにかく悪意のあるソフトウェアの作者はあなたのアドバイスに従わず、悪意のないソフトウェアを除外する必要はありません。
追加された 著者 Harry Johnston,
企業管理者が、承認されていないソフトウェアを実際に実行しないようにするには、ソフトウェア制限ポリシーまたは(Windows 7の場合)AppLockerを調べる必要があります。
追加された 著者 Harry Johnston,
比較して比較する stackoverflow.com/questions/7919359/… に関係なく、windowsコマンドプロンプトを識別する方法はありますか?
追加された 著者 Harry Johnston,
大衆に公開されたソフトウェアが大会に準拠することを期待する企業ポリシー
追加された 著者 stackuser83,

デフォルトのオプションは常にマシンごとのインストール、つまり管理者アクセスが必要ですが、ユーザごとのインストールを提供できる場合は、これは追加のボーナスであり、人々の生活を楽にします。

実行可能であれば、インストーラをインストールした場合とインストールしなくても動作する場合の2つのバージョンを提供するのがベストプラクティスです。後者は、ポータブルアプリケーションとして知られています。

(そして私が注目している間に:企業のITに代わって、インストーラに文書化されたテスト済みのサイレントモードが含まれていることを確認し、ソフトウェアを自動的にインストールできるようにしてください)。

1
追加された
通常、ポータブルアプリケーションは、設定をアプリケーションファイルと同じディレクトリに保存するか、サブディレクトリに保存します。伝統的なアプリケーションでは、これは非常に悪い考えですが、ポータブルアプリケーションのポイントは、各ユーザーがそれぞれ独自のコピーを持っていることです。 (もちろん、インストーラをインストールしたバージョンでもユーザーのアプリケーションデータフォルダを使用する必要があります)。
追加された 著者 Harry Johnston,
面白いので、私はインストーラーから非管理者を確実にロックする必要があります。それに加えて、私は移植可能なバージョンを提供するというアイデアが好きです(私は、.exeと簡単なジッパーがあり、.dllの数は十分でしょう)。私は、ポータブルアプリは%APPDATA%でもその設定を保存すべきではないと思いますか?
追加された 著者 Nicolas Bonnefon,

常にを設定することをお勧めしますALLUSERS = 1になります。

編集

Litteの追加により、msdnの記事を無限に読むことができます。 ALLUSERS = 1 はマシンごとにインストールを強制します。これにより、ユーザープロファイルがきれいに保たれ、ソフトウェアが企業環境で管理可能になります。ユーザーがログオンしていなくても、いつでもソフトウェアをインストールして削除できます。また、 ALLUSERS = 2 (ユーザーごとのインストールを許可)は、このような環境では削除することはできません。

プロパティテーブルまたはコマンドラインからプロパティを設定できます。

msiexec.exe myPackage.msi ALLUSERS=1
1
追加された
OPはMSIを使用していないことに注意してください。
追加された 著者 Harry Johnston,
私は同意しない、オリオンの答えに私のコメントを参照してください。
追加された 著者 Harry Johnston,