69 lines
1.5 KiB
Go
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
|
|
}
|