思源笔记丨如何用源码打包思源笔记 win64 exe

官方文档见:

环境配置

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,测试是否成功

桌面端编译调试思源笔记内核

之前给思源笔记贡献动态图标功能,需要改内核代码,并反复调试,具体调试步骤为

下载源码

在 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 模式的思源界面

启动内核后,进入 app 文件夹运行

cd app
ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ pnpm install electron@v32.2.2 -D
pnpm run dev # 出现webpack compiled successfully,就可以ctrl+C中断,运行pnpm run start
pnpm run start

如果是为了调试,我会开三个终端,一个用于编译内核,一个用于运行内核,一个用于启动思源 dev

桌面端打包 exe

替换 .\scripts\win-build.bat 为下面的内容(因为官方的脚本包括了 arm64 和微软商店的 appx,我不需要,就删除了)

以管理员启动 cmd,在项目根目录输入 .\scripts\win-build.bat,开始编译(没有管理员权限 pnpm run dist 这一步会报错)

@echo off
echo 'use ".\scripts\win-build.bat" instead of "win-build.bat"'

echo 'Building UI'
cd app
SET ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/
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://goproxy.io
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
call pnpm run dist
if errorlevel 1 (
    exit /b %errorlevel%
)

cd ..

编译成功

PixPin_2024-10-28_19-16-14

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

PixPin_2024-10-28_19-10-59

  • 思源笔记

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

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

    23008 引用 • 92548 回帖
3 操作
Achuan-2 在 2024-11-09 18:51:20 更新了该帖
Achuan-2 在 2024-10-28 20:13:42 更新了该帖
Achuan-2 在 2024-10-28 20:09:47 更新了该帖

相关帖子

欢迎来到这里!

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

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