Как кодировать строку в NSIS в формате UTF-16LE? - PullRequest
0 голосов
/ 05 мая 2019

Привет! Я пытаюсь скопировать этот код в Python для установщика NSIS.

m = hashlib.md5 ("C: \ PROGRAM FILES \ My Program" .encode ('utf-16LE')))

В основном кодирует строку, затем применяет к ней хеш MD5,Я нашел плагин хеша MD5 для NSIS.Однако я все еще не могу понять, как преобразовать строку в $ 0 в формат utf-16LE.

Спасибо

1 Ответ

0 голосов
/ 07 мая 2019

Если вы создаете установщик Unicode, вы можете использовать Crypto plug-in и передать ему строку напрямую:

Unicode True
...
Section
Crypto::HashUTF16LE MD5 "The quick brown fox jumps over the lazy dog"
Pop $0
DetailPrint $0 ; B0986AE6EE1EEFEE8A4A399090126837
SectionEnd

Установщики ANSI должны записать содержимое в файли хэшируйте файл:

Section
InitPluginsDir
StrCpy $1 "The quick brown fox jumps over the lazy dog"
StrLen $3 $1
IntOp $3 $3 * 2 ; UTF-16 is 2 bytes per code-unit
FileOpen $2 "$PluginsDir\Temp.txt" w
System::Call 'KERNEL32::WriteFile(pr2,wr1,ir3,*i,p0)' ; This converts the string for us
FileClose $2
Crypto::HashFile MD5 "$PluginsDir\Temp.txt"
Pop $0
DetailPrint $0
SectionEnd
...