5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-06 06:30:14 +08:00
wails/v3/examples/single-instance/README.md
Lea Anthony 773dca77d4
Single Instance feature.
Fix missing events on darwin.
2024-12-30 21:02:43 +11:00

63 lines
1.9 KiB
Markdown

# Single Instance Example
This example demonstrates the single instance functionality in Wails v3. It shows how to:
1. Ensure only one instance of your application can run at a time
2. Notify the first instance when a second instance is launched
3. Pass data between instances
4. Handle command line arguments and working directory information from second instances
## Running the Example
1. Build and run the application:
```bash
go build
./single-instance
```
2. Try launching a second instance of the application. You'll notice:
- The second instance will exit immediately
- The first instance will receive and display:
- Command line arguments from the second instance
- Working directory of the second instance
- Additional data passed from the second instance
3. Check the application logs to see the information received from second instances.
## Features Demonstrated
- Setting up single instance lock with a unique identifier
- Handling second instance launches through callbacks
- Passing custom data between instances
- Displaying instance information in a web UI
- Cross-platform support (Windows, macOS, Linux)
## Code Overview
The example consists of:
- `main.go`: The main application code demonstrating single instance setup
- A simple web UI showing current instance information
- Callback handling for second instance launches
## Implementation Details
The application uses the Wails v3 single instance feature:
```go
app := application.New(&application.Options{
SingleInstance: &application.SingleInstanceOptions{
UniqueID: "com.wails.example.single-instance",
OnSecondInstance: func(data application.SecondInstanceData) {
// Handle second instance launch
},
AdditionalData: map[string]string{
},
},
})
```
The implementation uses platform-specific mechanisms:
- Windows: Named mutex and window messages
- Unix (Linux/macOS): File locking with flock and signals