管理者権限を必要としないインストーラーを作成するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/73305

質問

Visual Studio でセットアップ/MSI を作成する場合、インストールに管理者権限を必要としない単純なアプリケーションのセットアップを行うことは可能ですか?Windows XP では不可能であれば、Vista では可能でしょうか?

たとえば、背景の上に写真を貼り付けることができる単純な画像操作アプリケーションです。Program Files フォルダーにインストールするには管理者権限が必要だと思いますが?代わりに \AppData フォルダーにインストールできますか?

目的は、ローカル マシンの管理者グループのメンバーではないユーザー向けにインストールされ、Vista 上で UAC プロンプトが表示されないアプリケーションを作成することです。

この方法の制限は、現在のユーザーのアプリ データ フォルダーにインストールすると、他のユーザーは実行できないことだと思います。

アップデート:

通常の setup.exe タイプのインストーラーにクリック 1 回インストールをパッケージ化できますか?なぜこれが必要なのかと疑問に思われるかもしれません。その理由は、前提条件チェックを行って必要なもの (.NET など) をインストールし、その後 MSI をダウンロードして実行するインストーラーがあるためです。通常のインストーラー開始画面しか表示されない場合でも、それも表示したいと考えています。アプリが 1 人のユーザー (インストールされているユーザー) のみに表示される場合でも問題ありません。

役に立ちましたか?

解決

ClickOnce は、この問題に対する優れた解決策です。[プロジェクト プロパティ] > [公開] に移動すると、これに関する設定をセットアップできます。特に、「インストール モードと設定」を参照するとよいでしょう。

  • アプリケーションはオンラインでのみ利用可能です -- これは事実上「1 回実行」アプリケーションです
  • アプリケーションはオフラインでも利用できます (スタート メニューから起動可能) -- これにより、アプリケーションが PC にインストールされます

実際には、ClickOnce Web 展開機能を使用する必要はありません。[ビルド] > [発行] を実行し、publish\ フォルダーの内容を zip 圧縮すると、それをインストーラーとして効果的に配布できます。さらにスムーズに実行するには、setup.exe ファイルを自動的に実行するフォルダーから自己解凍アーカイブを作成します。

この方法でインストールした場合でも、それを使用することを選択した場合、アプリケーションのオンライン更新は引き続き機能します。必要なのは、ClickOnce ファイルをオンラインに配置し、プロジェクトの [パブリッシュ] プロパティ ページに URL を入力することだけです。

他のヒント

ビスタは もっと この種のことについては制限が厳しいため、XP でそれができない場合は、Vista でもできないと考えられます。

Windows インストーラーを使用してプログラム ファイル フォルダーにインストールするには管理者権限が必要であるというのは正しいことです。実際には、 すべての書き込みアクセス そのフォルダーに保存するには管理者権限が必要です。そのため、実行可能ファイルと同じフォルダーにデータを保存しないでください。

幸いなことに、.Net を使用している場合は、msi の代わりに ClickOnce 展開を使用できます。これにより、管理者権限を必要とせずに各ユーザーのプロファイル内のフォルダーにインストールできるようになります。

これを行うための私が知っている唯一の方法は、.NET 2.0 以降で ClickOnce アプリケーションを構築することです。

アプリケーションのユーザーが正しい前提条件をインストールしている場合、アプリケーションはそのまま「起動」できます。

チェックアウト:

UAC が有効になっている場合は、Program Files に書き込むことができません。\AppData にインストールすると、実際には 1 人のユーザーに対してのみプログラムがインストールされます。

ただし、レジストリの変更を必要とする構成変更には、おそらく (再確認する必要がある) 管理者権限が必要であることに注意する必要があります。デスクトップの背景に対する変更は、最終的には HKEY_CURRENT_USER に保存されると思いつきます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top