Skip to content

Commit

Permalink
Correctly finalise app to requested name
Browse files Browse the repository at this point in the history
Requires a little juggling of .exe extension
Fixes #2395
  • Loading branch information
andydotxyz committed Sep 28, 2021
1 parent 43229d9 commit ea5a110
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 3 deletions.
5 changes: 4 additions & 1 deletion cmd/fyne/internal/commands/install.go
Expand Up @@ -146,7 +146,10 @@ func (i *Installer) install() error {
case "linux", "openbsd", "freebsd", "netbsd":
i.installDir = "/" // the tarball contains the structure starting at usr/local
case "windows":
dirName := p.name[:len(p.name)-4]
dirName := p.name
if filepath.Ext(p.name) == ".exe" {
dirName = p.name[:len(p.name)-4]
}
i.installDir = filepath.Join(os.Getenv("ProgramFiles"), dirName)
err := runAsAdminWindows("mkdir", "\"\""+i.installDir+"\"\"")
if err != nil {
Expand Down
9 changes: 8 additions & 1 deletion cmd/fyne/internal/commands/install_windows.go
Expand Up @@ -36,5 +36,12 @@ func linkToStartMenu(path, name string) error {

func postInstall(i *Installer) error {
p := i.Packager
return linkToStartMenu(filepath.Join(i.installDir, filepath.Base(p.exe)), p.name[:len(p.name)-4])
appName := p.name
appExe := p.name
if filepath.Ext(p.name) == ".exe" {
appName = p.name[:len(p.name)-4]
} else {
appExe = appExe+".exe"
}
return linkToStartMenu(filepath.Join(i.installDir, appExe), appName)
}
13 changes: 12 additions & 1 deletion cmd/fyne/internal/commands/package-windows.go
Expand Up @@ -106,8 +106,19 @@ func (p *Packager) packageWindows() error {
return errors.Wrap(err, "Failed to rebuild after adding metadata")
}

appPath := p.exe
appName := filepath.Base(p.exe)
if filepath.Base(p.exe) != p.name {
appName = p.name
if filepath.Ext(p.name) != ".exe" {
appName = appName + ".exe"
}
appPath = filepath.Join(filepath.Dir(p.exe), appName)
os.Rename(filepath.Base(p.exe), appName)
}

if p.install {
err := runAsAdminWindows("copy", "\"\""+p.exe+"\"\"", "\"\""+filepath.Join(p.dir, p.name)+"\"\"")
err := runAsAdminWindows("copy", "\"\""+appPath+"\"\"", "\"\""+filepath.Join(p.dir, appName)+"\"\"")
if err != nil {
return errors.Wrap(err, "Failed to run as administrator")
}
Expand Down

0 comments on commit ea5a110

Please sign in to comment.