Skip to content

Commit 841a044

Browse files
committed
使用go-memexec内嵌kindlegen程序到代码中,以得到单个可执行文件
1 parent fa04819 commit 841a044

38 files changed

+238
-516
lines changed

CHANGELOG

+4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
## 更新日志文件
22

3+
2022.08.26 go版本
4+
1. windows平台,使用embed内嵌kindlegen.exe到程序中,运行时使用go-memexec来加载程序
5+
2. windows平台,实现单个文件可执行,不需要其它依赖文件
6+
37
2022.08.25 go版本
48
1. 更新go版本为v1.16+
59
2. 采用embed模式来内嵌tpls/fonts文件

Kindlegen_darwin.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
//go:build darwin
12
// +build darwin
23

34
package ebookdownloader
@@ -7,7 +8,7 @@ import (
78
"path/filepath"
89
)
910

10-
//KindlegenCmd 执行外部kindlegen命令
11+
// KindlegenCmd 执行外部kindlegen命令
1112
func KindlegenCmd(args ...string) *exec.Cmd {
1213
path, _ := filepath.Abs("./tools/kindlegenMac")
1314
cmd := exec.Command(path, args...)

Kindlegen_linux.go

+23-10
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,33 @@
1+
//go:build linux && (386 || amd64) && (!arm || !arm64)
12
// +build linux
23
// +build 386 amd64
34
// +build !arm !arm64
45

56
package ebookdownloader
67

78
import (
8-
//"fmt"
9-
//"os"
10-
"os/exec"
11-
//"path/filepath"
9+
_ "embed"
10+
"fmt"
11+
12+
"github.com/amenzhinsky/go-memexec"
1213
)
1314

14-
//KindlegenCmd 执行外部kindlegen命令
15-
func KindlegenCmd(args ...string) *exec.Cmd {
16-
//path, _ := filepath.Abs("./tools/kindlegenLinux")
17-
//mt.Println("KindlegenLinux path=",path)
18-
cmd := exec.Command("kindlegenLinux" ,args...)
19-
return cmd
15+
/* Embedding one file into a slice of bytes */
16+
//go:embed tools/linux-x86/kindlegenLinux
17+
var kindleBinary []byte
18+
19+
// KindlegenCmd 执行外部kindlegen命令
20+
func KindlegenCmd(args ...string) {
21+
22+
exe, err := memexec.New(kindleBinary)
23+
24+
if err != nil {
25+
fmt.Println(err.Error())
26+
}
27+
defer exe.Close()
28+
29+
cmd := exe.Command(args...)
30+
31+
cmd.Run()
32+
2033
}

Kindlegen_linux_arm.go

-22
This file was deleted.

Kindlegen_linux_arm64.go

-21
This file was deleted.

Kindlegen_windows.go

+24-8
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,33 @@
1-
// +build windows
1+
//go:build windows
22

33
package ebookdownloader
44

55
import (
6-
"os/exec"
7-
"path/filepath"
6+
_ "embed"
7+
"fmt"
88
"syscall"
9+
10+
"github.com/amenzhinsky/go-memexec"
911
)
1012

11-
//KindlegenCmd 执行外部kindlegen命令
12-
func KindlegenCmd(args ...string) *exec.Cmd {
13-
path, _ := filepath.Abs("./tools/kindlegen.exe")
14-
cmd := exec.Command(path, args...)
13+
/* Embedding one file into a slice of bytes */
14+
//go:embed tools/win32/kindlegen.exe
15+
var kindleBinary []byte
16+
17+
// KindlegenCmd 执行外部kindlegen命令
18+
func KindlegenCmd(args ...string) {
19+
20+
exe, err := memexec.New(kindleBinary)
21+
22+
if err != nil {
23+
fmt.Println(err.Error())
24+
}
25+
defer exe.Close()
26+
27+
cmd := exe.Command(args...)
28+
1529
cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
16-
return cmd
30+
31+
cmd.Run()
32+
1733
}

boltdb.go

-150
This file was deleted.

boltdb_test.go

-58
This file was deleted.

0 commit comments

Comments
 (0)