Files
i2p.plugins.tor-updater/link_windows.go
2022-02-03 02:06:39 -05:00

69 lines
1.5 KiB
Go

package main
import (
"log"
"github.com/go-ole/go-ole"
"github.com/go-ole/go-ole/oleutil"
"os/user"
"path/filepath"
)
func GenerateAppArmor() error {
return nil
}
func DesktopDirectory() (string, error) {
myself, error := user.Current()
if error != nil {
return "", error
}
homedir := myself.HomeDir
desktop := filepath.Join(homedir, "Desktop")
return desktop, nil
}
func CreateShortcuts() error {
desktopDir, err := DesktopDirectory()
if err != nil {
return err
}
desktop := filepath.Join(desktopDir, "torbrowser.lnk")
torBrowserPath, err := pathToMe()
if err != nil {
return err
}
torbrowserShortcut := torBrowserPath + " -torbrowser"
if err := makeLink(torbrowserShortcut, desktop); err != nil {
return err
}
i2pBrowserPath := torBrowserPath + " -i2pbrowser"
if err := makeLink(i2pBrowserPath, desktop); err != nil {
return err
}
return nil
}
func makeLink(src, dst string) error {
log.Println("Creating desktop shortcut:", dst)
ole.CoInitializeEx(0, ole.COINIT_APARTMENTTHREADED|ole.COINIT_SPEED_OVER_MEMORY)
oleShellObject, err := oleutil.CreateObject("WScript.Shell")
if err != nil {
return err
}
defer oleShellObject.Release()
wshell, err := oleShellObject.QueryInterface(ole.IID_IDispatch)
if err != nil {
return err
}
defer wshell.Release()
cs, err := oleutil.CallMethod(wshell, "CreateShortcut", dst)
if err != nil {
return err
}
idispatch := cs.ToIDispatch()
oleutil.PutProperty(idispatch, "TargetPath", src)
oleutil.CallMethod(idispatch, "Save")
return nil
}