思源笔记丨如何自己修改、编译思源笔记代码,打包为 exe

官方文档见:

自己修改代码、打包思源笔记 exe,不求人!

如何用 Github 自动编译思源笔记为 exe

直接用 Github 打包思源 dev 版本,无需本地配置,适合思源笔记更新功能还没发版,自己先打包软件来体验

思源笔记 dev 版本代码不一定稳定,建议有代码基础的同学玩

思源笔记的 Github 仓库有自动化脚本,检测到 repo 打了 tag,并且包含-dev,就会自动编译(cd.yml

于是根据这个自动打包脚本,无需本地环境,就可以自己编译出 exe 了

步骤

  1. Github fork 思源仓库

  2. 给 dev 分支打标签:需要以-dev+ 版本为后缀才能激活打包脚本,比如 v3.2.0-dev2

    1. 方法一:用本地 git

      • git tag dev 版本号
      • git push --tag
    2. 方法二:直接在 Github Release 页面创建 tag

      但是这个方法有一个问题,Github 网页打 tag 目前会同时创建 release,而思源的打包脚本会检测有无 release,存在当前 tag 的 release 就会打包脚本就会执行失败,所以目前想到的方法就是——先创建 tag 和 release,然后迅速删掉 release,这样就能让打包脚本执行成功了

      PixPin_2025-07-09_22-56-59

Github 自动打包界面

PixPin_2025-07-09_22-56-17

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

PixPin_2025-07-09_22-55-52

本地编译思源笔记

环境配置

Windows 安装 mingw

MinGW 安装地址:https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/seh/?tdsourcetag=s_pctim_aiomsg

选择版本: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

GitHub:josephspurrier/goversioninfo: Golang Microsoft Windows File Properties/Version Info and Icon Resource Generator

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 这一步会报错)

编译成功

PixPin_2024-10-28_19-16-14

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

PixPin_2024-10-28_19-10-59

修改思源笔记代码后如何调试

编译内核

在 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 界面

如果之前已经编译过内核,并且内核代码没修改可以跳过这一步

运行前端界面

  1. cd app
  2. pnpm install electron​(思源笔记随着版本更新会更新 electron 版本,根据.github\CONTRIBUTING.md​自行更新 electron 版本)
  3. pnpm run dev​(显示 webpack 5.99.5 compiled successfully in 3801 ms,就可以按 Ctrl+C 结束运行)
  4. pnpm run start
  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    28446 引用 • 119788 回帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...