FileJoin: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
m (Adding new author and category links.) |
Instructor (talk | contribs) No edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
{{PageAuthor|Instructor}} | {{PageAuthor|Instructor}} | ||
{{User:Instructor/Headers/Template}} | |||
== Function Description == | |||
<highlight-nsis> | |||
== | ____________________________________________________________________________ | ||
<highlight-nsis> | |||
FileJoin v1.4 | FileJoin v1.4 | ||
Line 30: | Line 27: | ||
-Error flag if input files aren't exists | -Error flag if input files aren't exists | ||
-Error flag if output file path isn't exists | -Error flag if output file path isn't exists | ||
</highlight-nsis> | |||
Example1 (Join: a.log + b.log = Z.log): | <b>Example1 (Join: a.log + b.log = Z.log):</b> | ||
Section | <highlight-nsis>Section | ||
${FileJoin} "C:\a.log" "C:\logs\b.log" "C:\Z.log" | ${FileJoin} "C:\a.log" "C:\logs\b.log" "C:\Z.log" | ||
SectionEnd | SectionEnd | ||
</highlight-nsis> | |||
Example2 (Add: a.log + b.log = a.log): | <b>Example2 (Add: a.log + b.log = a.log):</b> | ||
Section | <highlight-nsis>Section | ||
${FileJoin} "C:\a.log" "C:\logs\b.log" "C:\a.log" | ${FileJoin} "C:\a.log" "C:\logs\b.log" "C:\a.log" | ||
SectionEnd | SectionEnd | ||
</highlight-nsis> | |||
== Function Code == | |||
<highlight-nsis> | |||
Function FileJoin | Function FileJoin | ||
!define FileJoin `!insertmacro FileJoinCall` | !define FileJoin `!insertmacro FileJoinCall` |
Latest revision as of 12:00, 30 November 2005
Author: Instructor (talk, contrib) |
Page for NSIS 2.07 and below users
You can use the latest version of headers (recommended) or the following function code (put the function code in your script before calling it)
Function Description
____________________________________________________________________________ FileJoin v1.4 ____________________________________________________________________________ Thanks Afrow UK (Based on his idea of Function "JoinFiles") Join two files in one (File1 + File2 = File3). Syntax: ${FileJoin} "[File1]" "[File2]" "[File3]" "[File1]" ; Input File1 "[File2]" ; Input File2 "[File3]" ; Output File3 ; If [File3]="" Then add [File2] to [File1] Note: -Error flag if input files aren't exists -Error flag if output file path isn't exists
Example1 (Join: a.log + b.log = Z.log):
Section ${FileJoin} "C:\a.log" "C:\logs\b.log" "C:\Z.log" SectionEnd
Example2 (Add: a.log + b.log = a.log):
Section ${FileJoin} "C:\a.log" "C:\logs\b.log" "C:\a.log" SectionEnd
Function Code
Function FileJoin !define FileJoin `!insertmacro FileJoinCall` !macro FileJoinCall _FILE1 _FILE2 _FILE3 Push `${_FILE1}` Push `${_FILE2}` Push `${_FILE3}` Call FileJoin !macroend Exch $2 Exch Exch $1 Exch Exch 2 Exch $0 Exch 2 Push $3 Push $4 Push $5 ClearErrors IfFileExists $0 0 error IfFileExists $1 0 error StrCpy $3 0 IntOp $3 $3 - 1 StrCpy $4 $2 1 $3 StrCmp $4 \ +2 StrCmp $4 '' +3 -3 StrCpy $4 $2 $3 IfFileExists '$4\*.*' 0 error StrCmp $2 $0 0 +2 StrCpy $2 '' StrCmp $2 '' 0 +3 StrCpy $4 $0 goto +3 GetTempFileName $4 CopyFiles /SILENT $0 $4 FileOpen $3 $4 a IfErrors error FileSeek $3 -1 END FileRead $3 $5 StrCmp $5 '$\r' +3 StrCmp $5 '$' +2 FileWrite $3 '$\r$' ;FileWrite $3 '$\r$--Divider--$\r$' FileOpen $0 $1 r IfErrors error FileRead $0 $5 IfErrors +3 FileWrite $3 $5 goto -3 FileClose $0 FileClose $3 StrCmp $2 '' end Delete '$EXEDIR\$2' Rename $4 '$EXEDIR\$2' IfErrors 0 end Delete $2 Rename $4 $2 IfErrors 0 end error: SetErrors end: Pop $5 Pop $4 Pop $3 Pop $2 Pop $1 Pop $0 FunctionEnd