Share下自己编译的 SumatraPDF 绿色汉化优化版

SumatraPDF

SumatraPDF, 开源,免费,多功能,小巧的PDF阅读器(当然,也支持很多流行书籍格式,诸如epub/Mobi/CHM)等等。

已经用了多年了。非常好用,不到6M的体积启动速度完爆各类浏览器。

不过,这个工具的绿色模式(aka,Portable)有个缺点,配置文件和缓存都会放到执行程序目录下。可是,哥习惯把一堆小型程序扔到一个OneDrive目录里面(是的,我就是 ~/bin 党)。

没办法,自己 Clone 下库,然后哼哧哼哧下载VS2019社区版。动手改造下。

(看代码+修改10分钟,搞定编译错误和链接问题20分钟,Clone代码半小时,下载VS2019两个小时……)

改造并不麻烦,见下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/* Generate the full path for a filename used by the app in the userdata path. */
/* Caller needs to free() the result. */
WCHAR* AppGenDataFilename(const WCHAR* fileName) {
if (!fileName) {
return nullptr;
}
if (gAppDataDir && dir::Exists(gAppDataDir)) {
return path::Join(gAppDataDir, fileName);
}
// if (IsRunningInPortableMode()) {
// /* Use the same path as the binary */
// return path::GetPathOfFileInAppDir(fileName);
// }
AutoFreeWstr path = GetSpecialFolder(CSIDL_LOCAL_APPDATA, true);
if (!path) {
return nullptr;
}
const WCHAR* appName = GetAppName();
path = path::Join(path, appName);
if (!path) {
return nullptr;
}
bool ok = dir::Create(path);
if (!ok) {
return nullptr;
}
return path::Join(path, fileName);
}

粗暴的去除掉画蛇添足的PortableMode即可。

这样,光秃秃的一个文件放到bin目录里面,养眼的很。

附带下载链接如下:

SumatraPDF 3.3 绿色汉化版

程序用UPX压缩过。编译出来后,实际上是14M大小。壮哉UPX,宝刀不老30年~

PS:不要问为啥一个程序员看文史资料选辑,这是另一个故事