Compare commits

...

5 Commits

Author SHA1 Message Date
Lea Anthony
dd5158b84c Allow customising of info.plist 2020-08-23 09:45:40 +10:00
Lea Anthony
670986df5b Lintastic update 2020-08-21 23:44:22 +10:00
Lea Anthony
086cd02cd4 Lint fix 2020-08-21 23:44:22 +10:00
Lea Anthony
d8c8dd57fa Add artem to Contributors 2020-08-21 23:44:22 +10:00
Lea Anthony
2d158d449a Use double encoding for notify data 2020-08-21 23:44:22 +10:00
4 changed files with 57 additions and 20 deletions

View File

@@ -30,3 +30,4 @@ Wails is what it is because of the time and effort given by these great people.
* [Florian Didron](https://github.com/fdidron) * [Florian Didron](https://github.com/fdidron)
* [Christopher Murphy](https://github.com/Splode) * [Christopher Murphy](https://github.com/Splode)
* [Zámbó, Levente](https://github.com/Lyimmi) * [Zámbó, Levente](https://github.com/Lyimmi)
* [artem](https://github.com/Unix4ever)

View File

@@ -212,6 +212,8 @@ func (b *PackageHelper) packageOSX(po *ProjectOptions) error {
packageID := strings.Join([]string{"wails", name, version}, ".") packageID := strings.Join([]string{"wails", name, version}, ".")
plistData := newPlistData(name, exe, packageID, version, author) plistData := newPlistData(name, exe, packageID, version, author)
appname := po.Name + ".app" appname := po.Name + ".app"
plistFilename := path.Join(build, appname, "Contents", "Info.plist")
customPlist := path.Join(b.fs.Cwd(), "info.plist")
// Check binary exists // Check binary exists
source := path.Join(build, exe) source := path.Join(build, exe)
@@ -230,28 +232,48 @@ func (b *PackageHelper) packageOSX(po *ProjectOptions) error {
// Remove the existing package // Remove the existing package
os.RemoveAll(appname) os.RemoveAll(appname)
// Create directories
exeDir := path.Join(build, appname, "/Contents/MacOS") exeDir := path.Join(build, appname, "/Contents/MacOS")
b.fs.MkDirs(exeDir, 0755) b.fs.MkDirs(exeDir, 0755)
resourceDir := path.Join(build, appname, "/Contents/Resources") resourceDir := path.Join(build, appname, "/Contents/Resources")
b.fs.MkDirs(resourceDir, 0755) b.fs.MkDirs(resourceDir, 0755)
tmpl := template.New("infoPlist")
plistFile := filepath.Join(b.getPackageFileBaseDir(), "info.plist")
infoPlist, err := ioutil.ReadFile(plistFile)
if err != nil {
return err
}
tmpl.Parse(string(infoPlist))
// Write the template to a buffer // Do we have a custom plist in the project directory?
var tpl bytes.Buffer if !fs.FileExists(customPlist) {
err = tmpl.Execute(&tpl, plistData)
if err != nil { // No - create a new plist from our defaults
return err tmpl := template.New("infoPlist")
} plistFile := filepath.Join(b.getPackageFileBaseDir(), "info.plist")
filename := path.Join(build, appname, "Contents", "Info.plist") infoPlist, err := ioutil.ReadFile(plistFile)
err = ioutil.WriteFile(filename, tpl.Bytes(), 0644) if err != nil {
if err != nil { return err
return err }
tmpl.Parse(string(infoPlist))
// Write the template to a buffer
var tpl bytes.Buffer
err = tmpl.Execute(&tpl, plistData)
if err != nil {
return err
}
// Save to the package
err = ioutil.WriteFile(plistFilename, tpl.Bytes(), 0644)
if err != nil {
return err
}
// Also write to project directory for customisation
err = ioutil.WriteFile(customPlist, tpl.Bytes(), 0644)
if err != nil {
return err
}
} else {
// Yes - we have a plist. Copy it to the package verbatim
err = fs.CopyFile(customPlist, plistFilename)
if err != nil {
return err
}
} }
// Copy executable // Copy executable

View File

@@ -152,12 +152,19 @@ func (h *Bridge) NotifyEvent(event *messages.EventData) error {
// Marshall the data // Marshall the data
data, err = json.Marshal(event.Data) data, err = json.Marshal(event.Data)
if err != nil { if err != nil {
h.log.Errorf("Cannot unmarshall JSON data in event: %s ", err.Error()) h.log.Errorf("Cannot marshal JSON data in event: %s ", err.Error())
return err return err
} }
} }
message := "window.wails._.Notify('" + event.Name + "','" + string(data) + "')" // Double encode data to ensure everything is escaped correctly.
data, err = json.Marshal(string(data))
if err != nil {
h.log.Errorf("Cannot marshal JSON data in event: %s ", err.Error())
return err
}
message := "window.wails._.Notify('" + event.Name + "'," + string(data) + ")"
dead := []*session{} dead := []*session{}
for _, session := range h.sessions { for _, session := range h.sessions {
err := session.evalJS(message, notifyMessage) err := session.evalJS(message, notifyMessage)

View File

@@ -329,7 +329,14 @@ func (w *WebView) NotifyEvent(event *messages.EventData) error {
} }
} }
message := fmt.Sprintf("wails._.Notify('%s','%s')", event.Name, data) // Double encode data to ensure everything is escaped correctly.
data, err = json.Marshal(string(data))
if err != nil {
w.log.Errorf("Cannot marshal JSON data in event: %s ", err.Error())
return err
}
message := "window.wails._.Notify('" + event.Name + "'," + string(data) + ")"
return w.evalJS(message) return w.evalJS(message)
} }