これは確かに問題のある領域であり、簡単な解決策はありません。特に、すべての解決策には多くの欠点があり、明確な勝者がいないためです.
1 つのオプションは、.dll ファイルのみを置き換えることです。これにより、アセンブリの署名が防止され (実行可能ファイル自体を更新していないため)、ほとんどすべてのアプリケーション ロジックが dll に存在するようにアプリケーションを構造化する必要があります。利点は、exe 自体で更新をチェックし、利用可能な場合はダウンロードできることですが、これは、dll が別の場所 (たとえば、appdata のアプリケーション プラグイン フォルダー) にデータとして保存されている場合にのみ実現可能です。
もう 1 つのオプションは、ローカルの管理者権限で実行される Windows サービスを使用して、更新プログラムをダウンロードしてインストールすることです。これは、別の Windows サービスの場合でも、ユーザーの介入なしで発生する可能性があります。ここでの秘訣は、更新サービスを実行したままにするのではなく、実際のアプリケーションの 1 つから開始し (起動時または終了時に)、更新をインストールした後にサービスを停止して、ユーザーが行き詰まらないようにすることです。さらに別の更新サービスを備えたシステム。
最後に、「完全に無人」の部分を削除することを真剣に検討する必要があります。ユーザーは断続的な起動の遅延が問題であると感じるかもしれませんが、あなたがしていることを伝えても害はありません. 起動時に「新しいバージョンが見つかりました - インストール (今) (終了時) (後で)」というダイアログを表示するソリューションが特に気に入っています。これにより、遅延が必要かどうかを完全に制御できます。一部のアプリケーション (私が知っているすべてのポーカー クライアントなど) は、サーバー側のソフトウェアと同期する必要があり、このオプションを提供しませんが、何が起こっているかを知るために「更新中」ダイアログを表示します。インストールが自動である限り、プロンプトについて心配する必要はありません。