0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ubuntuでは管理者権限で置いたhtmlが読めない?のでwxWebViewを使った話

Posted at

前提

Ubuntu Desktop 24.04.2 LTS, 2025-05-10 現在の話です。かつ、私が何か勘違いしている可能性あり。

直前二つと同じくszmCt 開発時のお話。

sudo make install で置いた html

szmCt の元になった openMSX/catapult はクロスプラットフォームのソフトでありまして、とりあえず Windows と macOS で動かせるのを確認しつつ、いくつか Linux でもビルドしとこうと考えてたわけですよ。

catapult には説明書を呼び出す機能がなかったので、独自に html で説明書を用意してwxLaunchDefaultBrowser で読めるように書きました。

Windows では .exe ファイルの近くに、macOS では .app ファイルに入れておけばいいのでしょうが、はて Linux ではどこに置けばいいのかと。

話が前後しますが、元の catapult から wxWidgets を使っておりまして、wxWidgets は CMake でライブラリビルドすることが推奨されています。

そこで CMake 側で何かないかと調べたところ、CMakeLists.txt に include(GNUInstallDirs) と書いた上で ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DOCDIR} を使えばいいらしい1とわかりました。

Linux ディストリビューションは色々ありますが、とりあえず Ubuntu 使っときゃ大丈夫やろってんで用意。コードを用意して、cmake --build . -j8 して、sudo make install。これでいいでしょう…あれ?

wxWebView でなんとか回避

ブラウザは起動するのに表示してくれません。ちょっと待たんかい。

ファイラや端末から見ると、確かにそこに html ファイルがある。ところが szmCt 関係なく直接ブラウザで開こうとしても開けない。デフォルトブラウザを変更してもやっぱりダメ。

これはちょっとまずい。て言うか、同じような構造であろう openMSX 本体側でも説明書出せないんですけど。

仕方がないので別手段を模索します。で、webView なるものがあって、幸い wxWidgets に wxWebView 2 もありますよと。そんじゃーそっち使いますか。てことで、make install された html を読むときは webView で、リンクで外部ページを要求されたデフォルトブラウザを呼ぶ、というコードにしました。軽く書いてますがなかなかめんどくさかったです。

問題なのは Ubuntu だけ?

さて、そもそもなんでそんなことになるのか原因はよくわからないのですけれど、そういや近頃は html で何でもできるからセキュリティ対策で実行可能ファイルと同じ扱いになってるのかしら、とか思ったんですが、どうもそうでもないらしい。

試しに fedora 使ってみたら問題なかったし、それどころか Ubuntu 派生のはずの Linux Mint でも問題は起きませんでした。冒頭でも記したとおり、私が何か思い違いをしてる可能性があるんで詳しい人とかちょっと調査してみてください。

なお、元々この作業がいらない Windows と macOS は webView 使ってません。というか少なくとも wxWebView は今回の用途では使い物になりません。独自プロトコル不可とかで。

  1. GNUInstallDirs

  2. wxWebView

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?