解説は多いけど結局どうするのかよくわからなかったので自分なりにまとめ。
Pythonとpywebviewでも十分便利そうではあるのですけれども、やっぱり単体バイナリにしたいよなーってところです。
RustかVか、はたまたgoかみたいなところで悩むのですけれども将来性はRustかなーとも思うのでRustとweb-viewで行ってみようと思いました。
尚RustとCargoのインストールについては端折ります。
Windows 10 SDKのインストール
Windowsでweb-viewを使う場合MSHTMLかEDGEを選べるのですが、MSHTMLってIEのことです、IEはないよなーせめてEDGEだよなーってことで、EDGEを使うにはWindows 10 SDKが必要ですよと。
Visual Studio InstallerでWindows 10 SDKをインストールします。
プロジェクトの作成など
cargo new webview_test
Cargo.tomlを編集
dependenciesに追加
web-view = { version = "0.7.3", features = ["edge"] }
web-viewをadd
cargo add web-view
srcを編集
#![windows_subsystem = "windows"]
use web_view::*;
fn main() {
let html_content = "<html><body><h1>Hello!</h1></body></html>";
web_view::builder()
.title("hello world")
.content(Content::Html(html_content))
.size(320, 240)
//.resizable(false)
.user_data(())
.invoke_handler(|_webview, _arg| Ok(()))
.run()
.unwrap()
}
コンパイルと実行
cargo build
cargo run
無事に動作したようです。
ポイントはcargo addとWindows 10 SDK
Windows 10 SDKのことはweb-vew公式のドキュメントにちらっとは書いてあるのですがRustに不慣れなこともあり cargo add の件を落としていてなかなか動作させることが出来ず悩みました。
コンパイルは通るけれど実行が出来ないみたいなことになります
このままでは使い物にならないので次回以降、外部ファイルから読み込む、HTML側とのやりとり、バイナリにリソースを含めてビルドする。あたりをやってゆきたいと思います。