如何正确使用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 安装程序:
- 将插件移至根插件文件夹内的 Unicode 插件子文件夹。
- 将
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
我是 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 安装程序:
- 将插件移至根插件文件夹内的 Unicode 插件子文件夹。
- 将
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