解決策が見つかりました。私は現在考えている唯一の人です。基本的には、JNLPをカスタムアプリランチャーでラップし、アプリに署名し、サーバー上でJNLPを即座に変更してから実行できるようにする必要があります。
ご存知のように、JARファイルをOSX実行可能ファイルにまとめることができるアプリバンドラプロジェクトがあります。これは、ゲートキーパーに署名し、配信し、失敗することはありません。私はJNLPファイルを取ることができるカスタムフォークを作成し、それをラップして、JNLPがすべきすべてのものをやっているカスタムアプリケーションを持っています。
要件は、あなたがbitbucket.orgにオーバー頭に
- 有効「開発者IDアプリケーションの」証明書を持っており、現在のバージョン
- Antタスクを実行し、appbundlerパッケージをビルドをダウンロードしないこと、しかし、です。
- アプリのコンテナを作成するサンプルのビルドスクリプトのドキュメントをご覧ください。
- この例では、現在アプリケーションにJNLPが含まれていません。
- アプリケーションシグネチャは、後でJNLPファイルを変更できるように作成されます。
- アプリケーションはzipファイルに入れられています。これはディレクトリのみであるためアプリケーションをダウンロードする場合に重要です
- サーバーコードを作成します。 ZIPファイルをロードし、JNLPファイルをディレクトリに入れます。
<yourapp>.app/Contents/Java/
- zipファイルを配信します。
これですべてがうまくいけば、ダウンロードフォルダにzipファイルが自動的に展開され、アプリケーションアイコンが表示されます。実際に間違えていない場合は、通常のアプリケーションと同じようにアプリケーションを実行できます。
これは、多くの開発者がOSXで壊れたJNLPの動作を修正するのに役立つことを願っています。
[変更可能なJNLPの更新] OSX 10.9.5以降、アプリケーションに有効なバージョン2の署名が必要です。これは、アプリケーションバンドラ(リソースリストファイルの設定)によって以前に使用されていたトリックがもう機能しないことを意味します。すべてと何かが今署名されなければならないし、その後署名されたアプリを変更することは事実上不可能です。
私は方法を見つけました:アプリのバンドラを使用してください。 JNLPをContents/_CodeSignature
ディレクトリ内のファイルに設定します。そこに変更可能なJNLPをまだコピーしないでください。後でJavaを使用してzipにパッチを当てる(あなたはここにいくつかのコードが必要です)。
ご注意:あなたがアプリのコンテナに動的に別のJNLPファイルを配置する必要がある場合、これは実際には必要とされなければならない(質問はおよそ何だったのthatsです)
UPDATE(08から2017)
Oracleは9月末までにJava 9をリリースします。 appbundlerはjava9 vmを正しく処理しません。彼らはAPI全体とjavawが動作する方法を変えました。私は言う必要があります:ラップされたJNLPアプリケーションを使用する場合は、java8に固執します。あなたは.dmg
を変更することなく、あなたが好きしかし.jnlp
を変更することができ、そのよう
javaws http://path/to/my/app.jnlp
:
あなたの仕事に感謝します!私は質問がありますが、これはJNLPファイルの更新にどのように対応していますか? – JavaJens
それは難しい部分です。私たちはコンテンツを配信するためにJavaを使用しています。 ZIPファイルを配信する前に、JNLPファイルを作成して既存のZIPファイルに入れます。 ZIPでJNLPファイルを変更しても、APPは署名を変更することはありません(署名プロセスの一部)。しかし、その場でZIPを修正するツールが必要です。 (例:ZipInputStream/ZipOutputStream) – gamma
はい、ただし、JNLP/Appが配信されても、JNLPは更新されません。 – JavaJens