NSIS安装程序基于zip?

时间:2013-07-09 21:40:44

标签: nsis

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

感谢。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

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

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

sectionend

答案 2 :(得分:0)

要在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替换为" Modern" UI。

另请注意,文件需要在"文件"中进行枚举。如果您将文件放在文件夹中,则可以包含整个内容:

File /r MyFolder\*.*

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