/*
nsisFile是NSIS文件操作特别是支持二进制文件操作和十六进制文件操作的插件
文件的句柄可以通过FileOpen函数来获得,nsisFile函数的返回值在nsis的栈里,可以使用Pop来获得返回值.
你可以通过NSIS的内置函数FileSeek来定位文件读取位置与nsisFile插件进行交互.
nsisFile::BinToHex:将二进制转成十六进制
nsisFile::HexToBin:十六进制转成二进制
nsisFile::FileReadBytes:读取文件
nsisFile::FileWriteBytes:写入文件,以十六进制写入
nsisFile::FileFindBytes:字符查找,-1为未找到,找到返回偏移地址.
nsisFile::FileTruncate:关闭句柄
*/
!ifndef TARGETDIR
!define TARGETDIR "..bin"
!endif
!addplugindir "${TARGETDIR}"
Name "Sample nsisFile"
OutFile "Sample.exe"
ShowInstDetails show
Section "Main program"
Delete "Temp.tmp"
FileOpen $0 "Temp.tmp" "a"
FileWrite $0 "Test-Atotorney"
FileSeek $0 -4 END
nsisFile::FileReadBytes $0 5
Pop $1
DetailPrint 'read: "$1" = "726E6579"'
FileSeek $0 1
nsisFile::FileWriteBytes $0 "6f 746F d-u-m-b"
Pop $1
DetailPrint 'written: $1 = 3'
FileSeek $0 0
nsisFile::FileFindBytes $0 "42" -1
Pop $1
DetailPrint 'searching "B": $1 = -1'
FileSeek $0 0
nsisFile::HexToBin "746f726e"
Pop $1
DetailPrint 'HexToBin: "$1" = "torn"'
nsisFile::BinToHex $1
Pop $1
DetailPrint 'BinToHex: "$1" = "746F726E"'
nsisFile::FileFindBytes $0 "$1" -1
Pop $1 ; should be 1
DetailPrint 'searching "torn": $1 = 8'
nsisFile::FileTruncate $0
FileClose $0
SectionEnd
© 版权声明
THE END
暂无评论内容