作成したスタンドアロ​ンアプリケーションの​インストーラが他のマ​シンで開けない

19 vues (au cours des 30 derniers jours)
A
A le 9 Nov 2024
Modifié(e) : A le 12 Nov 2024
App Designerで作ったアプリをスタンドアロンデスクトップアプリケーションとして他の人(MATLABを持っているとは限らない)に配布し使ってもらうことを考えています。
App Designerでアプリを作成した後、 https://jp.mathworks.com/help/matlab/creating_guis/app-sharing.htmlhttps://jp.mathworks.com/matlabcentral/answers/1928010-how-do-i-deploy-an-app-designer-application-to-a-standalone-desktop-apphttps://jp.mathworks.com/help/compiler/create-standalone-app-using-application-compiler-app.html 等に従い、「Desginer」タブの「Share」の「Standalone Desktop App」を押してApplication Compilerを開き、「PACKAGING OPTIONS」欄の「Runtime included in package」を選択した上で、「PACKAGE」欄の「Package」を押してパッケージ化しました。
https://jp.mathworks.com/help/compiler/files-generated-after-packaging-application-compiler.htmlhttps://jp.mathworks.com/matlabcentral/answers/1959629-matlab-runtime 等によると、生成される三つのフォルダのうち「for_redistribution」フォルダを渡せば良いようなので、他の人にこれを渡して中の「MyAppInstaller_mcr.app」を開いてもらおうとしたのですが、「アプリケーション"MyAppInstaller_mcr.app"を開けません。」というダイアログボックスが表示され開くことができませんでした。ちなみにフォルダごとではなく「MyAppInstaller_mcr.app」そのものを渡しても同様でした。
・どこに問題の原因がありそうでしょうか?
・MATLAB関連のソフトウェアが導入済みかどうかにかかわらず、このMyAppInstaller_mcr.appを無事に開くことができれば、MATLAB Runtimeが(入っていない場合には)インストールされてスタンドアロンアプリが動かせるようになるというのが、本来期待される動作だと理解しています。そもそもこの理解は正しいでしょうか?
環境は以下の通りです。
・スタンドアロンアプリを作成しMyAppInstaller_mcr.appを生成した環境:Apple M2、macOS 14.4.1、MATLAB 24.2.0.2740171 (R2024b) Update 1 (※ちなみに同じマシン上でMATLAB 2023bを使った場合でも同様であることを確認済みです。)
・MyAppInstaller_mcr.appを開いてもらうとした環境:Apple M2、macOS 14.5
よろしくお願いいたします。

Réponses (1)

Kojiro Saito
Kojiro Saito le 11 Nov 2024
.appを開けないというメッセージで、かつ「開発元を検証できないため開けません」のエラーではなさそうなので、ファイルアクセス権限の問題が考えられます。
該当のMacでターミナルを起動し、MyAppInstaller_mcr.appがあるディレクトリのファイル権限を確認してみてください。例えばデスクトップにファイルを置いている場合は下記のように確認できます。
ls -l ~/Desktop
または
ls -l ~/Desktop/for_redistribution
出力が「-rw-r--r--」のようになっていたら、実行権限(x)がないので「chmod +x」で追加します。
chmod +x MyAppInstaller_mcr.app
MyAppInstaller_mcr.appはパッケージ化したアプリとMATLAB Runtimeをインストールするインストーラーですので、これが開けてインストールができればアプリを実行できるようになります。
  3 commentaires
Kojiro Saito
Kojiro Saito le 12 Nov 2024
1. ファイル共有サービス経由のダウンロードで、フォルダー内のパーミッションが変わってしまったためと思われます。
libmwsafe_env.dylibのロードエラーについては、インストール時に格納されるシェルスクリプトを実行することで解消すると思います。/Applications/アプリ名/application/の中に「run_アプリ名.sh」というファイルが置かれるので、
./run_xxx.sh /Applications/MATLAB/MATLAB_Runtime/R2024b 引数1 引数2
のようにシェルスクリプト経由で実行してみてください。
2.生成したアプリの共有方法については公式ドキュメントは見つかりませんでした。
3.MATLAB CompilerではOSのマイナーバージョンまで合わせる必要はないのですが、少なくともAppleシリコン (Arm64)とIntel CPUではMATLAB Runtimeのソフトウェアが別になるので、現在のようにRuntimeをパッケージに含める方法ではうまくいかないと思います。
パッケージ化する際にMATLAB RuntimeをWebからインストールするデフォルトの設定にして作成されるインストーラー (MyAppInstaller_web.app)をIntel CPUのMacに配布してみてください。
A
A le 12 Nov 2024
Modifié(e) : A le 12 Nov 2024
ありがとうございます。
1.
libmwsafe_env.dylibのエラーについてですが、
./run_xxx.sh /Applications/MATLAB/MATLAB_Runtime/R2024b
とシェルスクリプト経由で実行することで時間はかかりましたが確かにアプリが起動しました。
ようやく全体像が見えてきた気がしているのですが、今回のようにApp Designerでスタンドアロンアプリを作成しfor_redistributionフォルダーの中のインストール用appファイルを配布している場合であったとしても、環境がMacやLinuxの場合は、配布先においてそのスタンドアロンアプリを使うためには必ず、上記のように毎回シェルスクリプト経由で実行する必要がある(もしスタンドアロンアプリのappファイルをダブルクリックして直接実行できるようにしたければ「デプロイ用の MATLAB Runtime パスの設定」に書かれているパスの設定が必ず必要である)ということでしょうか?
また、Windowsの場合はその必要はなく、アプリケーションのexeファイルをダブルクリックするだけで実行可能という理解は正しいでしょうか?
2.
了解いたしました。
3.
必要になるMATLAB Runtimeの種類の問題なのですね。こちらの経験とご回答内容を踏まえて、
・OSのマイナーバージョンの違いは問題ない
・OSのメジャーバージョンが違うと今回のようにうまくいかない可能性がある
・Macの場合、AppleシリコンかIntel CPUかが違うと(OSが同じでも)うまくいかない
ということだと了解しました。
ということは、配布用途のスタンドアロンアプリのパッケージ化では原則として"Runtime downloaded from web"を選択しておいた方が無難であると言えそうな気がします。
それでは、今回私が選択してしまっていた"Runtime included in package"を選択すべき時というのはどういう時でしょうか?
よろしくお願いいたします。

Connectez-vous pour commenter.

Produits


Version

R2024b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!