官方文档见:
自己修改代码、打包思源笔记 exe,不求人!
如何用 Github 自动编译思源笔记为 exe
直接用 Github 打包思源 dev 版本,无需本地配置,适合思源笔记更新功能还没发版,自己先打包软件来体验
思源笔记 dev 版本代码不一定稳定,建议有代码基础的同学玩
思源笔记的 Github 仓库有自动化脚本,检测到 repo 打了 tag,并且包含-dev,就会自动编译(cd.yml)
于是根据这个自动打包脚本,无需本地环境,就可以自己编译出 exe 了
步骤
-
Github fork 思源仓库
-
给 dev 分支打标签:需要以-dev+ 版本为后缀才能激活打包脚本,比如 v3.2.0-dev2
-
方法一:用本地 git
- git tag dev 版本号
- git push --tag
-
方法二:直接在 Github Release 页面创建 tag
但是这个方法有一个问题,Github 网页打 tag 目前会同时创建 release,而思源的打包脚本会检测有无 release,存在当前 tag 的 release 就会打包脚本就会执行失败,所以目前想到的方法就是——先创建 tag 和 release,然后迅速删掉 release,这样就能让打包脚本执行成功了

-
Github 自动打包界面

打包完成,可以自己下载 exe

本地编译思源笔记
环境配置
Windows 安装 mingw
选择版本:MinGW-W64 GCC-8.1.0 x86_64-posix-sjlj
介绍
- x86_64 是指 64 位的操作系统,i686 是指 32 位的操作系统。现在系统都是 64 位操作系统,所以选择 x86_64。
- win32 是开发 windows 系统程序的协议,posix 是其他系统的协议(例如 Linux、Unix、Mac OS)。
- 异常处理模型 seh(新的,仅支持 64 位系统),sjlj (稳定的,64 位和 32 位都支持), dwarf (优于 sjlj 的,仅支持 32 位系统)
配置 GO 环境
安装 go
安装最新版 golang
打开 CGO 支持
配置环境变量 CGO_ENABLED=1 打开 CGO 支持
安装 goversioninfo
go get github.com/josephspurrier/goversioninfo/cmd/goversioninfo
编译生成可执行文件 goversioninfo.exe
go build -o %GOPATH%\bin\goversioninfo.exe main.go
之后,在环境变量 PATH 中添加 %GOPATH%\bin,在命令行输入 goversioninfo,测试是否成功
编译 exe
⚠️ 注意
每次思源更新 electron 版本,需要重新安装思源笔记使用的 electron 版本
ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ pnpm install electron@v37.2.0 -D
替换 .\scripts\win-build.bat为下面的内容(因为官方的脚本包括了 arm64 和微软商店的 appx,我不需要,就删除了)
@echo off
echo 'use ".\scripts\win-build.bat" instead of "win-build.bat"'
echo 'Building UI'
cd app
call pnpm install
call pnpm run build
if errorlevel 1 (
exit /b %errorlevel%
)
cd ..
echo 'Cleaning Builds'
del /S /Q /F app\build 1>nul
del /S /Q /F app\kernel 1>nul
echo 'Building Kernel'
@REM the C compiler "gcc" is necessary https://sourceforge.net/projects/mingw-w64/files/mingw-w64/
go version
set GO111MODULE=on
set GOPROXY=https://mirrors.aliyun.com/goproxy/
set CGO_ENABLED=1
cd kernel
@REM you can use `go mod tidy` to update kernel dependency before build
@REM you can use `go generate` instead (need add something in main.go)
goversioninfo -platform-specific=true -icon=resource/icon.ico -manifest=resource/goversioninfo.exe.manifest
echo 'Building Kernel amd64'
set GOOS=windows
set GOARCH=amd64
go build --tags fts5 -v -o "../app/kernel/SiYuan-Kernel.exe" -ldflags "-s -w -H=windowsgui" .
if errorlevel 1 (
exit /b %errorlevel%
)
cd ..
echo 'Building Electron App amd64'
cd app
copy "elevator\elevator-amd64.exe" "kernel\elevator.exe"
call pnpm run dist
if errorlevel 1 (
exit /b %errorlevel%
)
以管理员启动 cmd,
cd /d D:\Code\siyuan-dev
在项目根目录输入 .\scripts\win-build.bat,开始编译(没有管理员权限 pnpm run dist 这一步会报错)
编译成功

编译后,在 app/build/文件夹可以看到打包的 exe,直接就可以安装

修改思源笔记代码后如何调试
编译内核
在 kernel 文件夹进行编译
// 最好编译内核开一个bash
cd kernel
go build --tags "fts5" -o "../app/kernel/SiYuan-Kernel.exe"
// 运行内核再开一个bash
cd ../app/kernel
./SiYuan-Kernel.exe --wd=.. --mode=dev
如果是为了调试,我会开三个终端,一个用于编译内核,一个用于运行内核,一个用于启动思源 dev 界面
如果之前已经编译过内核,并且内核代码没修改可以跳过这一步
运行前端界面
-
cd app -
pnpm install electron(思源笔记随着版本更新会更新 electron 版本,根据.github\CONTRIBUTING.md自行更新 electron 版本) -
pnpm run dev(显示 webpack 5.99.5 compiled successfully in 3801 ms,就可以按 Ctrl+C 结束运行) -
pnpm run start

欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于