mirror of
https://github.com/wavetermdev/wails.git
synced 2026-04-22 15:26:15 -07:00
Compare commits
87 Commits
v3-alpha
...
future/exp
| Author | SHA1 | Date | |
|---|---|---|---|
| d24d82f86d | |||
| 81e9223124 | |||
| 2374bb7e0e | |||
| 4c42ef9710 | |||
| b4d64678b5 | |||
| a4f729a6a0 | |||
| 8e593e9c35 | |||
| 0a09363db7 | |||
| b0b96c9838 | |||
| 8bbf5ff3f1 | |||
| 572fbc9705 | |||
| f371b513d1 | |||
| e5d3803fc1 | |||
| 06a0377963 | |||
| 62a5509390 | |||
| 54805d99a0 | |||
| d1e2ee452f | |||
| b5127d95ff | |||
| 174a31b49a | |||
| 746b4dfc04 | |||
| e5da0eb5f8 | |||
| f4044ebcd9 | |||
| bc7d8295ba | |||
| 71fb7fadff | |||
| be240795e2 | |||
| cf5def05a6 | |||
| ad802a3ad0 | |||
| 287039a8f3 | |||
| ad1d104d85 | |||
| 92af7455ad | |||
| b6b6acf1d9 | |||
| 5187641e25 | |||
| 41779866c4 | |||
| f800222781 | |||
| 0c364b2813 | |||
| 7dbb8c1377 | |||
| 6a0c101b08 | |||
| f240f2100c | |||
| 2b91ced1b7 | |||
| b7f1defbf3 | |||
| 2946a0aa25 | |||
| b043126031 | |||
| 4d58b56d54 | |||
| 025e8d7645 | |||
| e7abe1c606 | |||
| ea1f086289 | |||
| b1e8f2f887 | |||
| 45adc49683 | |||
| 2409984aab | |||
| 8f9eeb8055 | |||
| a8d5f185c2 | |||
| bbb418f98f | |||
| f8eb680559 | |||
| da5fa806d7 | |||
| 88f6a3d1b9 | |||
| 475880c0a8 | |||
| faf418eac0 | |||
| f35b8dfec5 | |||
| 14fcfb8348 | |||
| f84c4aca72 | |||
| dad7798da9 | |||
| 79af667b7a | |||
| d84cb5b190 | |||
| 7c18f25508 | |||
| 085de606ee | |||
| c7ac90def4 | |||
| bb36ce61bc | |||
| a35a876094 | |||
| f38c6c6d1c | |||
| f6a16950f2 | |||
| ddb2f63f7b | |||
| bf8e541221 | |||
| 4a2cf597c2 | |||
| 27370559d3 | |||
| a134bfac42 | |||
| d5e21d5003 | |||
| 85abb1122f | |||
| 0257362a86 | |||
| 1872672d0c | |||
| 644655662e | |||
| 508bbb4fb4 | |||
| cb9df61a98 | |||
| ab976e56af | |||
| df1cc2ee0b | |||
| af6daa273e | |||
| 05803fb5d5 | |||
| 5a37091bb0 |
@@ -31,3 +31,6 @@ v2/test/kitchensink/frontend/package.json.md5
|
||||
v2/cmd/wails/internal/commands/initialise/templates/testtemplates/
|
||||
.env
|
||||
/website/static/img/.cache.json
|
||||
|
||||
/v3/.task
|
||||
/v3/examples/build/bin/testapp
|
||||
|
||||
@@ -141,7 +141,7 @@ func (a *App) start() error {
|
||||
// Defer the shutdown
|
||||
defer a.shutdown()
|
||||
|
||||
// Run the renderer
|
||||
// run the renderer
|
||||
err = a.renderer.Run()
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
+1
-1
@@ -55,7 +55,7 @@ func newIPCMessage(incomingMessage string, responseFunction func(*ipcResponse) e
|
||||
// hasCallbackID checks if the message can send an error back to the frontend
|
||||
func (m *ipcMessage) hasCallbackID() error {
|
||||
if m.CallbackID == "" {
|
||||
return fmt.Errorf("attempted to return error to message with no Callback ID")
|
||||
return fmt.Errorf("attempted to return error to message with no callback ID")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -186,7 +186,7 @@ func (w *WebView) evalJSSync(js string) error {
|
||||
|
||||
go func() {
|
||||
exit := false
|
||||
// We are done when we receive the Callback ID
|
||||
// We are done when we receive the callback ID
|
||||
w.log.Debug("SyncJS: sending with ID = " + ID)
|
||||
w.eventManager.On(ID, func(...interface{}) {
|
||||
w.log.Debug("SyncJS: Got callback ID = " + ID)
|
||||
@@ -361,7 +361,7 @@ func (w *WebView) focus() {
|
||||
|
||||
// callback sends a callback to the frontend
|
||||
func (w *WebView) callback(data string) error {
|
||||
callbackCMD := fmt.Sprintf("window.wails._.Callback('%s');", data)
|
||||
callbackCMD := fmt.Sprintf("window.wails._.callback('%s');", data)
|
||||
return w.evalJS(callbackCMD)
|
||||
}
|
||||
|
||||
|
||||
@@ -4,12 +4,13 @@ import (
|
||||
"context"
|
||||
"embed"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/wailsapp/wails/v2/pkg/application"
|
||||
"github.com/wailsapp/wails/v2/pkg/menu"
|
||||
"github.com/wailsapp/wails/v2/pkg/options"
|
||||
"github.com/wailsapp/wails/v2/pkg/options/windows"
|
||||
"github.com/wailsapp/wails/v2/pkg/runtime"
|
||||
"time"
|
||||
)
|
||||
|
||||
//go:embed all:frontend/dist
|
||||
@@ -52,7 +53,7 @@ func main() {
|
||||
// create windows programmatically and be able to show/hide
|
||||
// them from the systray with something like:
|
||||
//
|
||||
// myWindow := mainApp.NewWindow(...)
|
||||
// myWindow := mainApp.NewWebviewWindow(...)
|
||||
// mainApp.NewSystemTray(&options.SystemTray{
|
||||
// OnLeftClick: func() {
|
||||
// myWindow.SetVisibility(!myWindow.IsVisible())
|
||||
|
||||
@@ -26,6 +26,8 @@ import (
|
||||
"github.com/wailsapp/wails/v2/pkg/assetserver"
|
||||
"github.com/wailsapp/wails/v2/pkg/assetserver/webview"
|
||||
|
||||
"github.com/wailsapp/wails/v2/pkg/assetserver"
|
||||
|
||||
"github.com/wailsapp/wails/v2/internal/binding"
|
||||
"github.com/wailsapp/wails/v2/internal/frontend"
|
||||
"github.com/wailsapp/wails/v2/internal/frontend/runtime"
|
||||
@@ -327,7 +329,7 @@ func (f *Frontend) processMessage(message string) {
|
||||
|
||||
switch result[0] {
|
||||
case 'c':
|
||||
// Callback from a method call
|
||||
// callback from a method call
|
||||
f.Callback(result[1:])
|
||||
default:
|
||||
f.logger.Info("Unknown message returned from dispatcher: %+v", result)
|
||||
@@ -337,7 +339,7 @@ func (f *Frontend) processMessage(message string) {
|
||||
}
|
||||
|
||||
func (f *Frontend) Callback(message string) {
|
||||
f.ExecJS(`window.wails.Callback(` + strconv.Quote(message) + `);`)
|
||||
f.ExecJS(`window.wails.callback(` + strconv.Quote(message) + `);`)
|
||||
}
|
||||
|
||||
func (f *Frontend) ExecJS(js string) {
|
||||
|
||||
@@ -428,7 +428,7 @@ func (f *Frontend) processMessage(message string) {
|
||||
|
||||
switch result[0] {
|
||||
case 'c':
|
||||
// Callback from a method call
|
||||
// callback from a method call
|
||||
f.Callback(result[1:])
|
||||
default:
|
||||
f.logger.Info("Unknown message returned from dispatcher: %+v", result)
|
||||
@@ -437,7 +437,7 @@ func (f *Frontend) processMessage(message string) {
|
||||
}
|
||||
|
||||
func (f *Frontend) Callback(message string) {
|
||||
f.ExecJS(`window.wails.Callback(` + strconv.Quote(message) + `);`)
|
||||
f.ExecJS(`window.wails.callback(` + strconv.Quote(message) + `);`)
|
||||
}
|
||||
|
||||
func (f *Frontend) startDrag() {
|
||||
|
||||
@@ -628,7 +628,7 @@ func (f *Frontend) processMessage(message string) {
|
||||
|
||||
switch result[0] {
|
||||
case 'c':
|
||||
// Callback from a method call
|
||||
// callback from a method call
|
||||
f.Callback(result[1:])
|
||||
default:
|
||||
f.logger.Info("Unknown message returned from dispatcher: %+v", result)
|
||||
@@ -638,7 +638,7 @@ func (f *Frontend) processMessage(message string) {
|
||||
|
||||
func (f *Frontend) Callback(message string) {
|
||||
f.mainWindow.Invoke(func() {
|
||||
f.chromium.Eval(`window.wails.Callback(` + strconv.Quote(message) + `);`)
|
||||
f.chromium.Eval(`window.wails.callback(` + strconv.Quote(message) + `);`)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ func (e *Events) notifyBackend(eventName string, data ...interface{}) {
|
||||
// We have a dirty flag to indicate that there are items to delete
|
||||
itemsToDelete := false
|
||||
|
||||
// Callback in goroutine
|
||||
// callback in goroutine
|
||||
for _, listener := range listeners {
|
||||
if listener.counter > 0 {
|
||||
listener.counter--
|
||||
|
||||
@@ -2,6 +2,7 @@ package menumanager
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/wailsapp/wails/v2/pkg/menu"
|
||||
)
|
||||
|
||||
@@ -90,7 +91,7 @@ func (m *Manager) ProcessClick(menuID string, data string, menuType string, pare
|
||||
return fmt.Errorf("No callback for menu '%s'", menuItem.Label)
|
||||
}
|
||||
|
||||
// Create new Callback struct
|
||||
// Create new callback struct
|
||||
callbackData := &menu.CallbackData{
|
||||
MenuItem: menuItem,
|
||||
//ContextData: data,
|
||||
|
||||
+2
-2
@@ -26,8 +26,8 @@ type TrayMenu struct {
|
||||
// Tooltip
|
||||
Tooltip string
|
||||
|
||||
// Callback function when menu clicked
|
||||
//Click Callback `json:"-"`
|
||||
// callback function when menu clicked
|
||||
//Click callback `json:"-"`
|
||||
|
||||
// Disabled makes the item unselectable
|
||||
Disabled bool
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
examples/kitchensink/kitchensink
|
||||
cmd/wails/wails
|
||||
/examples/systray/systray
|
||||
/examples/window/window
|
||||
/examples/dialogs/dialogs
|
||||
/examples/menu/menu
|
||||
/examples/clipboard/clipboard
|
||||
/examples/plain/plain
|
||||
@@ -0,0 +1,136 @@
|
||||
# https://taskfile.dev
|
||||
|
||||
version: '3'
|
||||
|
||||
tasks:
|
||||
|
||||
build-runtime-debug:
|
||||
dir: internal/runtime
|
||||
internal: true
|
||||
cmds:
|
||||
- npx esbuild desktop/main.js --bundle --sourcemap=inline --outfile=runtime_debug_desktop_{{.PLATFORM}}.js --define:DEBUG=true --define:WINDOWS={{.WINDOWS}} --define:DARWIN={{.DARWIN}} --define:LINUX={{.LINUX}} --define:PLATFORM={{.PLATFORM}}
|
||||
|
||||
build-runtime-debug-windows:
|
||||
cmds:
|
||||
- task: build-runtime-debug
|
||||
vars:
|
||||
WINDOWS: true
|
||||
DARWIN: false
|
||||
LINUX: false
|
||||
PLATFORM: windows
|
||||
|
||||
build-runtime-debug-linux:
|
||||
cmds:
|
||||
- task: build-runtime-debug
|
||||
vars:
|
||||
WINDOWS: false
|
||||
DARWIN: false
|
||||
LINUX: true
|
||||
PLATFORM: linux
|
||||
|
||||
build-runtime-debug-darwin:
|
||||
cmds:
|
||||
- task: build-runtime-debug
|
||||
vars:
|
||||
WINDOWS: false
|
||||
DARWIN: true
|
||||
LINUX: false
|
||||
PLATFORM: darwin
|
||||
|
||||
build-runtime-production:
|
||||
dir: internal/runtime
|
||||
internal: true
|
||||
cmds:
|
||||
- npx esbuild desktop/main.js --bundle --minify --outfile=runtime_production_desktop_{{.PLATFORM}}.js --define:DEBUG=true --define:WINDOWS={{.WINDOWS}} --define:DARWIN={{.DARWIN}} --define:LINUX={{.LINUX}} --define:PLATFORM={{.PLATFORM}}
|
||||
|
||||
build-runtime-production-windows:
|
||||
cmds:
|
||||
- task: build-runtime-production
|
||||
vars:
|
||||
WINDOWS: true
|
||||
DARWIN: false
|
||||
LINUX: false
|
||||
PLATFORM: windows
|
||||
|
||||
build-runtime-production-linux:
|
||||
cmds:
|
||||
- task: build-runtime-production
|
||||
vars:
|
||||
WINDOWS: false
|
||||
DARWIN: false
|
||||
LINUX: true
|
||||
PLATFORM: linux
|
||||
|
||||
build-runtime-production-darwin:
|
||||
cmds:
|
||||
- task: build-runtime-production
|
||||
vars:
|
||||
WINDOWS: false
|
||||
DARWIN: true
|
||||
LINUX: false
|
||||
PLATFORM: darwin
|
||||
|
||||
install-runtime-dev-deps:
|
||||
dir: internal/runtime/dev
|
||||
internal: true
|
||||
sources:
|
||||
- package.json
|
||||
cmds:
|
||||
- npm install
|
||||
|
||||
|
||||
install-runtime-deps:
|
||||
dir: internal/runtime
|
||||
internal: true
|
||||
sources:
|
||||
- package.json
|
||||
cmds:
|
||||
- npm install
|
||||
|
||||
build-runtime-dev:
|
||||
dir: internal/runtime/dev
|
||||
deps:
|
||||
- install-runtime-dev-deps
|
||||
sources:
|
||||
- ./*.js
|
||||
generates:
|
||||
- ../ipc_websocket.js
|
||||
cmds:
|
||||
- node build.js
|
||||
|
||||
build-runtime-ipc:
|
||||
dir: internal/runtime
|
||||
deps:
|
||||
- install-runtime-dev-deps
|
||||
sources:
|
||||
- ./desktop/ipc.js
|
||||
generates:
|
||||
- ipc.js
|
||||
cmds:
|
||||
- npx esbuild desktop/ipc.js --bundle --minify --outfile=ipc.js
|
||||
|
||||
test-runtime:
|
||||
dir: internal/runtime
|
||||
cmds:
|
||||
- npx vitest
|
||||
|
||||
build-runtime-all:
|
||||
dir: internal/runtime
|
||||
deps:
|
||||
- build-runtime-production-darwin
|
||||
- build-runtime-production-windows
|
||||
- build-runtime-production-linux
|
||||
- build-runtime-debug-darwin
|
||||
- build-runtime-debug-windows
|
||||
- build-runtime-debug-linux
|
||||
- build-runtime-dev
|
||||
- build-runtime-ipc
|
||||
cmds:
|
||||
- task: test-runtime
|
||||
|
||||
build-runtime:
|
||||
dir: internal/runtime
|
||||
deps:
|
||||
- install-runtime-deps
|
||||
cmds:
|
||||
- task: build-runtime-all
|
||||
@@ -0,0 +1,79 @@
|
||||
# The Wails CLI
|
||||
|
||||
The Wails CLI is a command line tool that allows you to create, build and run Wails applications.
|
||||
There are a number of commands related to tooling, such as icon generation and asset bundling.
|
||||
|
||||
## Commands
|
||||
|
||||
### run
|
||||
|
||||
The run command is for running tasks defined in `Taskfile.yml`.
|
||||
|
||||
| Flag | Type | Description | Default |
|
||||
|--------------------|--------|------------------------------------------------------|-----------------------|
|
||||
| `-t` | string | The name of the task to run | |
|
||||
|
||||
### generate
|
||||
|
||||
The `generate` command is used to generate resources and assets for your Wails project.
|
||||
It can be used to generate many things including:
|
||||
- application icons,
|
||||
- resource files for Windows applications
|
||||
- Info.plist files for macOS deployments
|
||||
|
||||
#### icon
|
||||
|
||||
The `icon` command generates icons for your project.
|
||||
|
||||
| Flag | Type | Description | Default |
|
||||
|--------------------|--------|------------------------------------------------------|-----------------------|
|
||||
| `-example` | bool | Generates example icon file (appicon.png) | |
|
||||
| `-input` | string | The input image file | |
|
||||
| `-sizes` | string | The sizes to generate in .ico file (comma separated) | "256,128,64,48,32,16" |
|
||||
| `-windowsFilename` | string | The output filename for the Windows icon | icons.ico |
|
||||
| `-macFilename` | string | The output filename for the Mac icon bundle | icons.icns |
|
||||
|
||||
```bash
|
||||
wails generate icon -input myicon.png -sizes "32,64,128" -windowsFilename myicon.ico -macFilename myicon.icns
|
||||
```
|
||||
|
||||
This will generate icons for mac and windows and save them in the current directory as `myicon.ico`
|
||||
and `myicons.icns`.
|
||||
|
||||
#### syso
|
||||
|
||||
The `syso` command generates a Windows resource file (aka `.syso`).
|
||||
|
||||
```bash
|
||||
wails generate syso <options>
|
||||
```
|
||||
|
||||
| Flag | Type | Description | Default |
|
||||
|-------------|--------|--------------------------------------------|------------------|
|
||||
| `-example` | bool | Generates example manifest & info files | |
|
||||
| `-manifest` | string | The manifest file | |
|
||||
| `-info` | string | The info.json file | |
|
||||
| `-icon` | string | The icon file | |
|
||||
| `-out` | string | The output filename for the syso file | `wails.exe.syso` |
|
||||
| `-arch` | string | The target architecture (amd64,arm64,386) | `runtime.GOOS` |
|
||||
|
||||
If `-example` is provided, the command will generate example manifest and info files
|
||||
in the current directory and exit.
|
||||
|
||||
If `-manifest` is provided, the command will use the provided manifest file to generate
|
||||
the syso file.
|
||||
|
||||
If `-info` is provided, the command will use the provided info.json file to set the version
|
||||
information in the syso file.
|
||||
|
||||
NOTE: We use [winres](https://github.com/tc-hib/winres) to generate the syso file. Please
|
||||
refer to the winres documentation for more information.
|
||||
|
||||
NOTE: Whilst the tool will work for 32-bit Windows, it is not supported. Please use 64-bit.
|
||||
|
||||
#### defaults
|
||||
|
||||
```bash
|
||||
wails icon -input myicon.png -sizes "32,64,128" -windowsFilename myicon.ico -macFilename myicon.icns
|
||||
```
|
||||
This will generate all the default assets and resources in the current directory. I
|
||||
@@ -0,0 +1,28 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"github.com/pterm/pterm"
|
||||
|
||||
"github.com/leaanthony/clir"
|
||||
"github.com/wailsapp/wails/v3/internal/commands"
|
||||
)
|
||||
|
||||
func main() {
|
||||
app := clir.NewCli("wails", "The Wails CLI", "v3")
|
||||
app.NewSubCommandFunction("init", "Initialise a new project", commands.Init)
|
||||
task := app.NewSubCommand("task", "Run and list tasks")
|
||||
task.NewSubCommandFunction("run", "Run a task", commands.RunTask)
|
||||
task.NewSubCommandFunction("list", "List tasks", commands.ListTasks)
|
||||
generate := app.NewSubCommand("generate", "Generation tools")
|
||||
generate.NewSubCommandFunction("defaults", "Generate default build assets", commands.Defaults)
|
||||
generate.NewSubCommandFunction("icons", "Generate icons", commands.GenerateIcons)
|
||||
generate.NewSubCommandFunction("syso", "Generate Windows .syso file", commands.GenerateSyso)
|
||||
generate.NewSubCommandFunction("bindings", "Generate bindings + models", commands.GenerateBindings)
|
||||
err := app.Run()
|
||||
if err != nil {
|
||||
pterm.Error.Println(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
_ "embed"
|
||||
"log"
|
||||
|
||||
"github.com/wailsapp/wails/v3/examples/binding/services"
|
||||
|
||||
"github.com/wailsapp/wails/v3/pkg/application"
|
||||
"github.com/wailsapp/wails/v3/pkg/options"
|
||||
)
|
||||
|
||||
type localStruct struct{}
|
||||
|
||||
func main() {
|
||||
app := application.New(options.Application{
|
||||
Bind: []interface{}{
|
||||
&localStruct{},
|
||||
&services.GreetService{},
|
||||
},
|
||||
})
|
||||
|
||||
app.NewWebviewWindow()
|
||||
|
||||
err := app.Run()
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package models
|
||||
|
||||
type Person struct {
|
||||
Name string
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"github.com/wailsapp/wails/v3/examples/binding/models"
|
||||
)
|
||||
|
||||
type GreetService struct {
|
||||
SomeVariable int
|
||||
lowercase string
|
||||
Parent *models.Person
|
||||
}
|
||||
|
||||
func (*GreetService) Greet(name string) string {
|
||||
return "Hello " + name
|
||||
}
|
||||
|
||||
func (g *GreetService) GetPerson() *models.Person {
|
||||
return g.Parent
|
||||
}
|
||||
|
||||
func (g *GreetService) SetPerson(person *models.Person) {
|
||||
g.Parent = person
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
# Build
|
||||
|
||||
Wails has adopted [Taskfile](https://taskfile.dev) as its build tool. This is optional
|
||||
and any build tool can be used. However, Taskfile is a great tool, and we recommend it.
|
||||
|
||||
The Wails CLI has built-in integration with Taskfile so the standalone version is not a
|
||||
requirement.
|
||||
|
||||
## Building
|
||||
|
||||
To build the example, run:
|
||||
|
||||
```bash
|
||||
wails run -t build
|
||||
```
|
||||
@@ -0,0 +1,42 @@
|
||||
version: '3'
|
||||
|
||||
tasks:
|
||||
|
||||
pre-build:
|
||||
summary: Pre-build hooks
|
||||
|
||||
post-build:
|
||||
summary: Post-build hooks
|
||||
|
||||
build:
|
||||
summary: Builds the application
|
||||
cmds:
|
||||
- task: pre-build
|
||||
- go build -gcflags=all="-N -l" -o bin/testapp main.go
|
||||
- task: post-build
|
||||
env:
|
||||
CGO_CFLAGS: "-mmacosx-version-min=10.13"
|
||||
CGO_LDFLAGS: "-mmacosx-version-min=10.13"
|
||||
|
||||
generate-icons:
|
||||
summary: Generates Windows `.ico` and Mac `.icns` files from an image
|
||||
dir: build
|
||||
cmds:
|
||||
# Generates both .ico and .icns files
|
||||
- wails generate icon -input appicon.png
|
||||
|
||||
build-prod:
|
||||
summary: Creates a production build of the application
|
||||
cmds:
|
||||
- go build -tags production -ldflags="-w -s" -o bin/testapp
|
||||
|
||||
package-darwin:
|
||||
summary: Packages a production build of the application into a `.app` bundle
|
||||
deps:
|
||||
- build-prod
|
||||
- generate-icons
|
||||
cmds:
|
||||
- mkdir -p buildtest.app/Contents/{MacOS,Resources}
|
||||
- cp build/icons.icns buildtest.app/Contents/Resources
|
||||
- cp bin/testapp buildtest.app/Contents/MacOS
|
||||
- cp build/Info.plist buildtest.app/Contents
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user