【发布时间】:2013-07-09 21:40:44
【问题描述】:
有没有人有“基于 zip 的安装程序”的基本 NSIS 脚本示例?或者可以告诉我命令吗?我知道 NSIS 内置了该工具,但我想根据它编辑脚本。 NSIS 仅输出基于 zip 的安装程序的 .exe。我想从脚本代码开始。
谢谢。
【问题讨论】:
标签: nsis
有没有人有“基于 zip 的安装程序”的基本 NSIS 脚本示例?或者可以告诉我命令吗?我知道 NSIS 内置了该工具,但我想根据它编辑脚本。 NSIS 仅输出基于 zip 的安装程序的 .exe。我想从脚本代码开始。
谢谢。
【问题讨论】:
标签: nsis
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
【讨论】:
您可以使用以下脚本将 zip 文件提取到目标位置,在编译此脚本之前,您需要下载 ZipDLL.dll 并将其放在您的 NSIS 安装文件夹中。
OutFile "Zip.exe"
section
ZipDLL::extractall "C:\Users\raj\Desktop\envConfig.zip" "C:\Program Files (x86)\Zip"
sectionend
【讨论】:
要以 Anders 的回答为基础,应在最新版本中做一些额外的事情。特别是 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”。
【讨论】: