Как правильно использовать плагин NSIS Unzip? - PullRequest
0 голосов
/ 14 апреля 2020

Я новичок в программировании NSIS, поэтому я нашел плагин NSISUNZ для извлечения файлов.

Это мой код:

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

Я не получаю сообщение об ошибке или что-то, кроме файла не извлекается. Для установки плагина я просто извлек файл .dll в папку плагинов.

Что я здесь не так делаю?

Спасибо, что ответили

1 Ответ

0 голосов
/ 15 апреля 2020

Если выходные данные представляют собой одну букву, то, скорее всего, вы используете версию плагина Unicode в установщике Ansi.

В идеале вы должны создать установщик Unicode с NSIS v3:

  1. Переместите плагин в подпапку плагина Unicode внутри папки плагинов root.
  2. Добавьте Unicode True к вашему .NSI.

Если вы все еще используете NSIS v2, вам нужно найти другую версию плагина, скорее всего, другой файл. на вики.

Unicode True
!addplugindir /x86-unicode "$%userprofile%\Downloads\Nsisunz\Plugin 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 "$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 $1

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

SectionEnd
...