Releases: pmq20/node-packer
Releases · pmq20/node-packer
Latest Windows Pre-release
windows-x64 CI: name assets with version number
Latest Linux Pre-release
linux-x64 CI: name assets with version number
Latest macOS Pre-release
darwin-x64 CI: name assets with version number
Node.js Compiler v1.5.0
- upgrade Node.js runtime to v8.3.0
- upgrade libsquash to v0.8.0
- allow creating files inside an existing folder of memfs
- removes the temporary directory and files at exit
- produce an executable
squash_sample
whenBUILD_SAMPLE
in cmake- let CI discover linking errors earlier about the sample
- intercept
CreateProcessW
- unsets
lpCurrentDirectory
when it was set to__enclose_io_memfs__
paths
- unsets
- intercept
SetCurrentDirectoryW
,GetCurrentDirectoryW
- implement
enclose_io_mkdir
for Windows- intercept
_wmkdir
- intercept
- intercept
CreateFileW()
with writing- redirect
CreateFileW()
with writing inside the memfs to a temporary directory - removes the temporary directory and files at exit
- redirect
- allow creating files inside an existing folder of memfs
- add options to generate installers
- add
--pkg
: generates a pkg installer for macOS
- add
- fix bad package versions for product.wxs when generating MSI installers
- Fix bad versions in MSI like
1.0.0-rc.9
- Fix bad versions in MSI like
- fix the example code on compiling a web application
- removes the following files automatically before compiling
.git
,a.exe
,a.out
node_modules/node/bin/node.exe
node_modules/.bin/node.exe
node_modules/node/bin/node
node_modules/.bin/node
- fixes #57
- set
ENCLOSE_IO_CHDIR
env var ifoptions.cwd
is set inchild_process.spawn
- call
process.chdir
at start-up whenENCLOSE_IO_CHDIR
is set
- call
Download: http://enclose.io/nodec
Translations in Chinese:
- 将编译器的 Node.js 运行时升级到了 v8.3.0
- 将 libsquash 升级到了 v0.8.0
- 允许在虚拟的内存文件系统中创建文件夹
- 此种请求会被转发到磁盘的临时文件夹,并在退出时删除运行时所创建的文件夹及其内容
- 让 cmake 在
BUILD_SAMPLE
的时候生成一个squash_sample
可执行文件- 这可以让 CI 今早发现 sample 代码链接阶段的问题
- 劫持
CreateProcessW
系统调用- 当第八个参数
lpCurrentDirectory
被设定为__enclose_io_memfs__
路径时清空这个参数,以防出错
- 当第八个参数
- 劫持
SetCurrentDirectoryW
,GetCurrentDirectoryW
系统调用 - 为 Windows 实现
enclose_io_mkdir
函数- 为 Windows 劫持
_wmkdir
系统调用
- 为 Windows 劫持
- 劫持
CreateFileW()
系统调用的写的情况- 即允许在虚拟的内存文件系统中写文件,或在虚拟的内存文件系统中创建的文件夹内写文件
- 此种请求会被转发到磁盘的临时文件夹,并在退出时删除运行时所写的文件
- 允许在虚拟的内存文件系统中创建文件夹
- 添加更多生成安装器的选项
- 添加
--pkg
以为 macOS 生成 pkg 安装器
- 添加
- 修复生成 MSI 安装器时特殊的版本号导致的出错,如带有英文的
1.0.0-rc.9
- 修复编译 Web 应用示例时出错的问题
- 编译开始前自动移除下列文件
.git
,a.exe
,a.out
node_modules/node/bin/node.exe
node_modules/.bin/node.exe
node_modules/node/bin/node
node_modules/.bin/node
- 修复 #57
- 设定
ENCLOSE_IO_CHDIR
环境变量来处理child_process.spawn
的options.cwd
选项为包内虚拟路径的问题- 一旦
ENCLOSE_IO_CHDIR
环境变量被设定,则启动时自动调用process.chdir
切换到设定的目录
- 一旦
下载地址: http://enclose.io/nodec
Node.js Compiler v1.4.0
- upgrade Node.js runtime to v8.2.0
- fix bad package names for product.wxs when generating MSI installers
- upgrade to libsquash v0.7.0
- test ifndef
__USE_XOPEN_EXTENDED
- test ifndef
- upgrade to libautoupdate v0.2.0
- Auto-update shall only run once in every 24 hours with help of the file
~/.libautoupdate
- add argument
force
toautoupdate()
in order to force an auto-update check - add CI to test
autoupdate()
- fix failures to replace itself when TMPDIR and current file is not on the same volume
- Auto-update shall only run once in every 24 hours with help of the file
- remove
node_main.obj
before compiling to avoid a MS toolchain bug - make nodec version part of the tmpdir namings
- use only the master CI
- remove
node/deps/npm
Download: http://enclose.io/nodec
Translations in Chinese:
- 将编译器的 Node.js 运行时升级到了 v8.2.0
- 修复 MSI 生成时包的名字出错;名字是动态替换进去的,有些包的名字里包含@和减号等特殊字符
- 将 libsquash 升级到 v0.7.0
- 提前测试是否定义了
__USE_XOPEN_EXTENDED
宏
- 提前测试是否定义了
- 将 libautoupdate 升级到 v0.2.0
- 每次启动都检查更新会导致启动速度变慢,现改成了在用户主目录下记录 .libautoupdate 文件来限制 24 小时内只检查一次
- 向
autoupdate()
添加force
参数来强制自动更新 - 在 CI 中添加对
autoupdate()
的测试 - Windows 下自动更新夸卷无法替换自身,现采取直接拿当前目录做临时目录的办法解决了这个问题
- 例如在 D:\1\2.exe 下的文件直接拿 D:\1 来做临时目录,而不再取用 C 盘
- #42
- 每次编译之前都清理
node_main.obj
文件来避免遇到微软工具链的 bug 导致此文件过期 - 让 nodec 的版本号也成为临时目录命名的一部分,实现了更安全的 nodec 自我自动更新
- 简化 CI,今后只使用 master CI
- 丢弃
node/deps/npm
,降低了 nodec 的分发大小
下载地址: http://enclose.io/nodec
Node.js Compiler v1.3.0
- upgrade Node.js runtime to v8.1.4
- add options to generate installers
- add
--msi
: generates a msi installer for Windows
- add
- use a temporary directory name with nodec version when compiling
- add option --quiet to enable quiet mode
- if
ENTRANCE
was not provided, then a single Node.js interpreter executable will be produced.- use this feature to warm up your tmpdir in one command: nodec --tmpdir=/your/dir
Download: http://enclose.io/nodec
Translations in Chinese:
- 将编译器的 Node.js 运行时升级到了 v8.1.4
- 添加生成安装器的选项
- 添加 --msi 来为您的工程生成 Windows MSI 安装器
- 使用取决于 Node.js 运行时版本的临时文件夹,再也不同担心升级 nodec 而导致临时文件夹过期了
- 添加选项 --quiet 来进行静默编译
- 当不提供入口 ENTRANCE 参数时,生成一个独立的 Node.js 解释器
- 可以利用此功能一键跑热临时文件夹: nodec --tmpdir=/your/dir
下载地址: http://enclose.io/nodec
Node.js Compiler v1.2.0
- equip nodec itself with auto-update abilities via cloud services provided by http://enclose.io
- upgrade Node.js runtime to v8.1.3
- allow Windows to spawn binaries inside the compiled product
- add environment variable
ENCLOSE_IO_USE_ITSELF
, which avoids injectingENCLOSE_IO_USE_ORIGINAL_NODE
when spawning child processes - removes Master CI Part 2, which is now part of Master CI
- add option --skip-npm-install to skip the npm install process
- start using libautoupdate to handle auto-update
- https://github.com/pmq20/libautoupdate
- remove user prompts when a new version is detected
- send header Host in Round 1
- handle possible new 302 responses after Round 1
- upgrade libsquash to v0.6.0
- add
enclose_io_ifextract(const char* path, const char* ext_name)
- add
enclose_io_if(const char* path)
- fix a NULL-dereferencing in
EncloseIOFindFirstFileHelper
- convert macro
ENCLOSE_IO_DOS_RETURN
to a function - rename
squash_global_fdtable_mutex
tosquash_global_mutex
- intercept
mkdir()
- redirect
mkdir()
inside the memfs to a temporary directory - removes the temporary directory and files at exit
- redirect
- intercept
open()
withO_CREAT
- redirect
open()
withO_CREAT
inside the memfs to a temporary directory - removes the temporary directory and files at exit
- redirect
- handle the case where
bin
of package.json is a string, e.g. package.json ofnpm
- add
Translations in Chinese:
- 通过 http://enclose.io 提供的云服务,让 nodec 自身(从本版本起)也进行自动原地更新
- 将编译器的 Node.js 运行时升级到了 v8.1.3
- 处理 package.json 的
bin
内容为字符串而不是哈希的情况(如npm
这个包的 package.json) - 允许 Windows 执行编译后的自身包内的二进制文件
- 添加环境变量
ENCLOSE_IO_USE_ITSELF
,用来阻止派生子进程时把自己视为 node 解释器使用 - 移除 Master CI Part 2,合并入主 Master CI
- 添加 --skip-npm-install 选项来跳过 npm install 过程
- 将自动升级的逻辑单独抽成了一个库 libautoupdate v0.1.0
- https://github.com/pmq20/libautoupdate
- 当监测到新版本时,停用用户提示,直接更新,仅给出提示“通过 CI=true 环境变量可禁用自动更新”
- 修复了第一步请求少发了 Host 头的问题
- 处理第一轮请求获取新版本时得到多个 302 响应的情况
- 将 libsquash 升级到了 v0.6.0
- 添加新 API
enclose_io_ifextract(const char* path, const char* ext_name)
- 添加新 API
enclose_io_if(const char* path)
- 修复
EncloseIOFindFirstFileHelper
中的一个空指针解引用 - 将宏
ENCLOSE_IO_DOS_RETURN
改写为函数调用 - 将全局锁
squash_global_fdtable_mutex
重命名为squash_global_mutex
- 劫持
mkdir()
系统调用- 对于那些试图在只读的内存文件系统中进行
mkdir()
的系统调用转发到临时文件夹 - 让程序退出时删除此临时文件夹和其中的所有文件
- 对于那些试图在只读的内存文件系统中进行
- 劫持带有
O_CREAT
flag 的open()
系统调用- 将那些试图在只读的内存文件系统中进行带有
O_CREAT
flag 的open()
系统调用转发到临时文件夹 - 让程序退出时删除此临时文件夹和其中的所有文件
- 将那些试图在只读的内存文件系统中进行带有
- 添加新 API
Architecture | Latest Stable | |
---|---|---|
Windows | x86-64 | http://enclose.io/nodec/nodec-x64.zip |
macOS | x86-64 | http://enclose.io/nodec/nodec-darwin-x64.gz |
Linux | x86-64 | http://enclose.io/nodec/nodec-linux-x64.gz |
Node.js Compiler v1.1.0
- designed and published the project homepage via Ant Design
- upgrade Node.js runtime to v8.1.1
- upgrade Libsquash to v0.5.0
- deprecate use of swprintf() to ease compiling on Windows
- interpret system calls to access()
- disable AutoUpdate when environment variable
CI
was set - support spawning child processes via
sh -c "..."
, using the enclosed variable itself as the Node.js interpreter
Download Links: http://enclose.io/nodec
中文注解:
- 用 Ant Design 为 Node.js Compiler 设计、发布了项目主页
- 升级 Node.js 运行时到 v8.1.1
- 升级 Libsquash 到 v0.5.0
- 为方便在 Windows 上编译而去掉了 swprintf()
- 劫持 access() 系统调用
- 当环境变量
CI
被设定时,禁用自动更新 - 支持以
sh -c "..."
的形式派生子程序,并把打包后的进程自身作为 Node.js 解释器使用
下载地址: http://enclose.io/nodec
Node.js Compiler v1.0.0
- upgrade Node.js runtime to v8.0.0
- upgrade libsquash to v0.4.0
- add runtime support for native modules
- add CI tests for native modules
- make sure that we are able to compile web apps
- allow executing files within the enclosed package
- allow reusing the package itself as an Node.js interpreter
- on Windows, build the corresponding arch. with the node under use
- remove the
ENCLOSE_IO_ALWAYS_USE_ORIGINAL_NODE
hack - add auto-update feature via --auto-update-url and --auto-update-base
中文注解:
- 升级 Node.js 运行时到 8.0.0
- 升级 libsquash 到 v0.4.0
- 支持使用 node-sass 等 C++ 扩展模块
- 支持编译 Egg 等框架开发的 Web 应用
- 支持执行包内的可执行文件,如 PhantomJS
- 支持包分发后原地自动更新
Node.js Compiler v0.9.6
- relax node.js version requirement: #27
- upgrade Node.js runtime to v7.10.0
- add hints about installing SquashFS Tools
Operating System | Architecture | Download Link |
---|---|---|
Windows | x86 | https://sourceforge.net/projects/node-compiler/files/v0.9.6/nodec.exe/download |
macOS | x86-64 | https://sourceforge.net/projects/node-compiler/files/v0.9.6/nodec-darwin-x64/download |
Linux | x86-64 | https://sourceforge.net/projects/node-compiler/files/v0.9.6/nodec-linux-x64/download |