如何正确使用NSIS Unzip Plugin?

How to Use the NSIS Unzip Plugin properly?

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

这是我的代码:

OutFile "TEst.exe"
Section
!addplugindir nsisunz
initPluginsDir
nsisunz::Unzip "C:\Users\user\Downloads\TestVerzeichnis.zip" "C:\Users\user\Downloads"
SectionEnd

我没有收到错误或其他信息,但文件没有被提取。 对于插件的安装,我只是将 .dll 文件解压缩到插件文件夹中。

我做错了什么?

感谢您的回答

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

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

  1. 将插件移至根插件文件夹内的 Unicode 插件子文件夹。
  2. Unicode True 添加到您的 .NSI。

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

Unicode True
!addplugindir /x86-unicode "$%userprofile%\Downloads\Nsisunz\Plugin unicode"

!include LogicLib.nsh
Function SplitWrite
Pop 
StrCpy  ""
StrCpy  0
loop:
    StrCpy   1 
    ${If}  == "|"
    ${OrIf}  == ""
        IntOp   - 2
        StrCpy   2 
        FileWriteByte  "0x"
    ${EndIf}
    IntOp   + 1
    StrCmp  "" 0 loop
FunctionEnd

Section
InitPluginsDir
; Create a example .zip file 
FileOpen  "$PluginsDir\test.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 

CreateDirectory "$PluginsDir\TestDir"
nsisunz::Unzip "$PluginsDir\test.zip" "$PluginsDir\TestDir"
Pop [=10=]
DetailPrint [=10=] ; "success"
${If} [=10=] == "success"
    FileOpen  "$PluginsDir\TestDir\Test.txt" r
    FileRead  
    FileClose 
    DetailPrint  ; "Hello"
${EndIf}

SectionEnd