セルフアップデーターを含む Java アプリケーションを作成しました。セルフ アップデーターは、新しいプログラム バージョンを Web サーバーからロードし、アプリケーション ファイルを置き換えます。アプリケーションがユーザーのホーム ディレクトリなどにインストールされている場合、これは完全に機能しますが、C:\Program Files フォルダーにインストールされている場合、Windows マシンでは失敗します。これは、JVM がプログラム ディレクトリへの書き込みアクセス権を持たないユーザーのアカウントで実行されるためです。インストーラーなどのネイティブ プログラムがプログラム フォルダーに書き込みを行おうとすると、通常はポップアップが表示され、ユーザーに書き込み操作を許可するように求められます。これは、Java アプリケーションでは発生しません。なんで?
ユーザーがそのフォルダへのアクセスを許可できるように、Java プログラムの制限付きフォルダへの書き込み操作でセキュリティ ポップアップが表示されるようにする方法はありますか?
ご回答ありがとうございます。回答によると、次のオプションが表示されます。
Java Web Start
私にとって、これはエンド ユーザーの選択肢ではありません。Java Web Start とは何か、それが何に役立ち、どのように使用されるかなど、一般のエンド ユーザーが知っているとは誰も期待できないと思います。たとえば、一般の Windows ユーザーが Java Web Start アプリケーションのアンインストール方法を知っているとは思えません。マニフェストで exe ランチャーを使用して Java アプリケーションを起動
する このソリューションを理解する限り、exe ランチャーはアプリケーションの開始時に拡張実行を要求します。これはまさに私が望んでいるものではありません。私のユースケースでは、アプリケーションの起動ごとではなく、更新が利用可能であれば、拡張された権利を取得するだけで十分です。ネイティブ実行可能ファイルを呼び出して更新操作を実行する
ネイティブ実行可能ファイルを呼び出して、更新操作を実行させることができます。このようにして、更新が利用可能な場合にのみ、アプリケーションは拡張された権利を要求します。これは悪くないように思えますが、Windows 用のネイティブ コーディングが含まれており、他のプラットフォームでは機能しません。ランチャーをプログラム フォルダーにインストールし、アプリケーションをユーザー ホームに
インストール ユーザーのホーム ディレクトリにインストールされているアプリケーションを呼び出すプログラム フォルダーにランチャーを配置できます。このようにして、ユーザーのホーム フォルダー内のアプリケーションを更新することができます。私は Windows にアプリケーションをインストールするために InnoSetup を使用していますが、私が見る限り、このインストーラーやおそらく他のインストーラーでも分割インストールを実現するのは困難です。アプリケーション全体をユーザーのホーム ディレクトリにインストールする
ユーザーは自分のホーム ディレクトリへの書き込みアクセス権を持っているため、まったく問題はありません。私にとって、これはその単純さの最良の選択肢のように見えます。