3

有没有人有“基于 zip 的安装程序”的基本 NSIS 脚本示例?或者可以告诉我命令吗?我知道 NSIS 内置了该工具,但我想根据它编辑脚本。NSIS 仅输出基于 zip 的安装程序的 .exe。我想从脚本代码开始。

谢谢。

4

3 回答 3

2

zip2exe 工具会生成一个简单的脚本并传递给 makensis,大部分代码都在它包含的文件中:

!define ZIP2EXE_COMPRESSOR_ZLIB
!define ZIP2EXE_INSTALLDIR "c:\foo"

!include "${NSISDIR}\Contrib\zip2exe\Base.nsh" ; You could edit this if you wanted to keep using zip2exe
!include "${NSISDIR}\Contrib\zip2exe\Classic.nsh"

!insertmacro SECTION_BEGIN
File "file1fromzip.txt"
File "file2fromzip.exe"
!insertmacro SECTION_END
于 2013-07-09T23:24:24.737 回答
2

您可以使用以下脚本在目标位置提取 zip 文件,在编译此脚本之前,您需要下载 ZipDLL.dll 并将其放在您的 NSIS 安装文件夹中。

OutFile "Zip.exe"
section
ZipDLL::extractall "C:\Users\raj\Desktop\envConfig.zip" "C:\Program Files (x86)\Zip"

sectionend
于 2018-02-28T11:10:04.107 回答
0

为了建立安德斯的答案,应该在最新版本中做一些额外的事情。特别是 ZIP2EXE_NAME 和 ZIP2EXE_OUTFILE 应该设置:

!define ZIP2EXE_COMPRESSOR_ZLIB
!define ZIP2EXE_INSTALLDIR "c:\foo"
!define ZIP2EXE_NAME "My Application"
!define ZIP2EXE_OUTFILE "MyInstaller.exe"

!include "${NSISDIR}\Contrib\zip2exe\Base.nsh"
!include "${NSISDIR}\Contrib\zip2exe\Classic.nsh"

!insertmacro SECTION_BEGIN
File "file1fromzip.txt"
File "file2fromzip.exe"
!insertmacro SECTION_END

对于“现代”用户界面,Classic.nsh 可以替换为 Modern.nsh。

另请注意,需要在“文件”部分中枚举文件,或者如果您将文件放在文件夹中,则可以包含全部内容:

File /r MyFolder\*.*

这不会在安装目标目录中创建“MyFolder”。

于 2016-10-05T17:02:25.150 回答