Tankan
1. Можно сделать так:
читать дальше »
Код:

System::Call "kernel32::CreateMutexA(i 0, i 0, t '$(^Name)') i .r0 ?e"
Pop $0
StrCmp $0 0 launch
StrLen $0 "$(^Name)"
IntOp $0 $0 + 1
loop:
FindWindow $1 '#32770' '' 0 $1
IntCmp $1 0 +4
System::Call "user32::GetWindowText(i r1, t .r2, i r0) i."
StrCmp $2 "$(^Name)" 0 loop
System::Call "user32::SetForegroundWindow(i r1) i."
Abort
launch:
3. Для NSIS есть плагин для распаковки 7z архивов, используй его. Так же могу скинуть плагин для распаковки FreArc архивов.