見出し画像

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のエラーがでてビルドできませんでした。

誰かの何かにお役に立てば


開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。