Archive: Redirecting output of executed programs


Redirecting output of executed programs
Hi,

I need to redirect the output of the utility I execute during installation to a file. It's actually a conversion from UTF-16 to UTF-8 and back using iconv.exe that outputs everything to the standard output. I tried running nsExec, Exec, !System, example:
ExecWait "$\"$INSTDIR\iconv.exe$\" -f UTF-16 -t UTF-8 $\"$INSTDIR\Templates\Full page with Rewards.xml$\" > $\"$INSTDIR\Templates\Full page with Rewards2.xml$\"" $4

It never created the output file.

How can I achieve redirecting standard output to a file or if that's not possible/easy enough, what's another way to do UTF-8 to UTF-16 conversion that would allow me to redirect output to a file?

Thank you for any help


Hi

If you want to use redirection you will probably need to run the command under a command shell, e.g.:


StrCpy $R0 'cmd.exe /c "$\"$INSTDIR\iconv.exe$\" -f UTF-16 -t UTF-8 $\"$INSTDIR\Templates\Full page with Rewards.xml$\" > $\"$INSTDIR\Templates\Full page with Rewards2.xml$\""'

ExecWait $R0
Pop $4



If that doesn't work, you could build a batch file at runtime to run the appropriate command e.g.

StrCpy $R0 "$TEMP\temp.cmd"

FileOpen $R1 $R0
FileWrite $R1 '$\"$INSTDIR\iconv.exe$\" -f UTF-16 -t UTF-8 $\"$INSTDIR\Templates\Full page with Rewards.xml$\" > $\"$INSTDIR\Templates\Full page with Rewards2.xml$\"'
FileClose $R1

ExecWait "cmd.exe /c $R0" $4

Delete $R0


Duncan

http://nsis.sourceforge.net/ExecDos_plug-in also writes to file.


Thanks a lot, this worked.

Originally posted by Mr Inches
Hi

If you want to use redirection you will probably need to run the command under a command shell, e.g.:

StrCpy $R0 'cmd.exe /c "$\"$INSTDIR\iconv.exe$\" -f UTF-16 -t UTF-8 $\"$INSTDIR\Templates\Full page with Rewards.xml$\" > $\"$INSTDIR\Templates\Full page with Rewards2.xml$\""'

ExecWait $R0
Pop $4



If that doesn't work, you could build a batch file at runtime to run the appropriate command e.g.

StrCpy $R0 "$TEMP\temp.cmd"

FileOpen $R1 $R0
FileWrite $R1 '$\"$INSTDIR\iconv.exe$\" -f UTF-16 -t UTF-8 $\"$INSTDIR\Templates\Full page with Rewards.xml$\" > $\"$INSTDIR\Templates\Full page with Rewards2.xml$\"'
FileClose $R1

ExecWait "cmd.exe /c $R0" $4

Delete $R0


Duncan