如何正确使用NSIS解压缩插件



我是NSIS编程的新手,所以我找到了NSISUNZ插件来提取文件。

这是我的代码:

OutFile "TEst.exe"
Section
!addplugindir nsisunz
initPluginsDir
nsisunz::Unzip "C:UsersuserDownloadsTestVerzeichnis.zip" "C:UsersuserDownloads"
SectionEnd

我没有得到错误或其他什么,但文件没有被提取。为了安装插件,我刚刚将.dll文件提取到插件文件夹中。

我在这里做错了什么?

感谢回答

如果输出只是一个字母,那么您很可能在Ansi安装程序中使用该插件的Unicode版本。

理想情况下,您应该使用NSIS v3:创建一个Unicode安装程序

  1. 将插件移到根插件文件夹中的Unicode插件子文件夹中
  2. Unicode True添加到.NSI

如果您仍在使用NSIS v2,则需要找到不同版本的插件,很可能是wiki上的其他文件。

Unicode True
!addplugindir /x86-unicode "$%userprofile%DownloadsNsisunzPlugin unicode"
!include LogicLib.nsh
Function SplitWrite
Pop $2
StrCpy $3 ""
StrCpy $4 0
loop:
StrCpy $5 $2 1 $4
${If} $5 == "|"
${OrIf} $5 == ""
IntOp $6 $4 - 2
StrCpy $6 $2 2 $6
FileWriteByte $1 "0x$6"
${EndIf}
IntOp $4 $4 + 1
StrCmp $5 "" 0 loop
FunctionEnd
Section
InitPluginsDir
; Create a example .zip file 
FileOpen $1 "$PluginsDirtest.zip" w
Push 50|4B|03|04|0A|00|00|00|00|00|AC|BA|93|50
Call SplitWrite
Push F8|06|53|6B|08|00|00|00|08|00|00|00|08|00|00|00|54|65|73|74|2E|74|78|74|48|65|6C|6C|6F|20|0D|0A|50|4B|01|02|3F|00|0A|00|00|00|00|00|AC|BA|93|50
Call SplitWrite
Push F8|06|53|6B|08|00|00|00|08|00|00|00|08|00|24|00|00|00|00|00|00|00|20|20|00|00|00|00|00|00|54|65|73|74|2E|74|78|74|0A|00|20|00|00|00|00|00|01|00|18|00
Call SplitWrite
Push D6|75|96|79|90|16|D6|01|96|4F|96|79|90|16|D6|01|96|4F|96|79|90|16|D6|01|50|4B|05|06|00|00|00|00|01|00|01|00|5A|00|00|00|2E|00|00|00|00|00
Call SplitWrite
FileClose $1
CreateDirectory "$PluginsDirTestDir"
nsisunz::Unzip "$PluginsDirtest.zip" "$PluginsDirTestDir"
Pop $0
DetailPrint $0 ; "success"
${If} $0 == "success"
FileOpen $1 "$PluginsDirTestDirTest.txt" r
FileRead $1 $2
FileClose $1
DetailPrint $2 ; "Hello"
${EndIf}
SectionEnd

最新更新