RikoOnWeb
18th February 2008 23:09 UTC
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
Mr Inches
19th February 2008 09:23 UTC
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
Takhir
19th February 2008 10:39 UTC
http://nsis.sourceforge.net/ExecDos_plug-in also writes to file.
RikoOnWeb
19th February 2008 16:21 UTC
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