
Wails v3を2023年4月時点で無理やり使う方法
ビルドできなかったWails v3のプログラムが気になって、昨日は、かみさんと買い物にいっている間も考えていました。夕方、ビルドできる技を発見しました。嬉しくなったので私のようにせっかちな人が 今Wails v3を使ってみる方法を書いておきます。
ますは、 GitHUBのwailsのリポジトリをCloneします。
git clone https://github.com/wailsapp/wails.git
v3のディレクトリでgo mod tidyを実行します。
cd wails/v3
go mod tidy
wails v3 のコマンドをビルドします。
cd cmd/wails
go build -o wailsv3 .
できた実行ファイルをパスの通ったところにコピーします。
パスを指定して、そのまま使ってもよいです。
テンプレートを確認します。

使いたいテンプレートを選んでプロジェクトを作成します。
GitHUBからcloneしたwailsの隣のディレクトリに作成するのがよいです。
wailsv3 init -t svelte -n twsnmpmw
のような感じです。 テンプレートがsvleteでtwsnmpmwがプログラムの名前です。
作成したディレクトリに移動してビルドします。
cd twsnmpmw
wailsv3 build
エラーがでます。
main.go:8:2: missing go.sum entry for module providing package github.com/wailsapp/wails/v3/pkg/application; to add:
go mod download github.com/wailsapp/wails/v3
ERROR task: Failed to run task "build": exit status 1
パッケージがないと言っています。普通ならgo mod tidyを実行すれば、必要なパッケージをダウンロードして解決しますが、そうすると、泥沼にはまります。wails v3はまだ開発途中なので自動でダウンロードされるパッケージでビルドすると、いろいろエラーがでます。悲惨なことにパッケージの中まで修正することになります。
ここで、見つけた技が、go mod のreplace です。
これを使えば、wails関連のパッケージを、最初にローカルにcloneしたリポジトリから読み込むことができます。wailsv3 initで作成したgo.modの最後に
replace github.com/wailsapp/wails/v3 => ../wails/v3
replace github.com/wailsapp/wails/v2 => ../wails/v2
を追加します。これで、先程のエラーはなくなります。
もう一つ、自動生成したソースコードにエラーがあります。

Assetsが定義されていないというものです。場所が違っているので、
移動します。

これでエラーが消えます。
修正したソースコードは
package main
import (
"embed"
_ "embed"
"log"
"github.com/wailsapp/wails/v3/pkg/application"
)
//go:embed frontend/dist
var assets embed.FS
func main() {
app := application.New(application.Options{
Name: "t5",
Description: "A demo of using raw HTML & CSS",
Mac: application.MacOptions{
ApplicationShouldTerminateAfterLastWindowClosed: true,
},
Assets: application.AssetOptions{
FS: assets,
},
})
// Create window
app.NewWebviewWindowWithOptions(&application.WebviewWindowOptions{
Title: "Plain Bundle",
CSS: `body { background-color: rgba(255, 255, 255, 0); } .main { color: white; margin: 20%; }`,
Mac: application.MacWindow{
InvisibleTitleBarHeight: 50,
Backdrop: application.MacBackdropTranslucent,
TitleBar: application.MacTitleBarHiddenInset,
},
URL: "/",
})
err := app.Run()
if err != nil {
log.Fatal(err)
}
}
です。
wailsv3 build
でビルドすれば、実行ファイルがbuild/binにできます。
起動すると

テンプレートの中でlitとlit-tsは同じようにビルドできましたが、起動すると画面が表示されませんでした。
svelte-tsは、JavaScriptのエラーがでてビルドできませんでした。
誰かの何かにお役に立てば
いいなと思ったら応援しよう!
