Jaki jest najprostszy sposób na zapisanie dziennika instalacji wyświetlanego w NSIS? Wydaje mi się, że pamiętam gdzieś, że możesz przekompilować kod NSIS specjalną flagą, aby umożliwić jej zapisanie dziennika. Czy istnieje prostszy sposób?Zapisywanie dziennika instalacji NSIS
Odpowiedz
Oto rozwiązanie prosto z NSIS website
StrCpy $0 "$EXEDIR\install.log"
Push $0
Call DumpLog
!define LVM_GETITEMCOUNT 0x1004
!define LVM_GETITEMTEXT 0x102D
Function DumpLog
Exch $5
Push $0
Push $1
Push $2
Push $3
Push $4
Push $6
FindWindow $0 "#32770" "" $HWNDPARENT
GetDlgItem $0 $0 1016
StrCmp $0 0 exit
FileOpen $5 $5 "w"
StrCmp $5 "" exit
SendMessage $0 ${LVM_GETITEMCOUNT} 0 0 $6
System::Alloc ${NSIS_MAX_STRLEN}
Pop $3
StrCpy $2 0
System::Call "*(i, i, i, i, i, i, i, i, i) i \
(0, 0, 0, 0, 0, r3, ${NSIS_MAX_STRLEN}) .r1"
loop: StrCmp $2 $6 done
System::Call "User32::SendMessageA(i, i, i, i) i \
($0, ${LVM_GETITEMTEXT}, $2, r1)"
System::Call "*$3(&t${NSIS_MAX_STRLEN} .r4)"
FileWrite $5 "$4$\r$\n"
IntOp $2 $2 + 1
Goto loop
done:
FileClose $5
System::Free $1
System::Free $3
exit:
Pop $6
Pop $4
Pop $3
Pop $2
Pop $1
Pop $0
Exch $5
FunctionEnd
Nie działa w trybie cichym, nie zadziała, jeśli coś nie działa. Jaki jest powód tego rodzaju logowania? –
To nie działa z 64-bitowym NSIS. Jakieś pomysły? – sproketboy
Dostaję wyjątek lvm_getitemcount już zdefiniowany – JackNova
Próbując zachować małe rozmiary plików, domyślna instalacja kompilatora NSIS nie powoduje utworzenia plików dziennika. Pobierz Special Build z wydania i skopiuj go do folderu aplikacji makensis.exe
(i Stub
), aby załączyć go w celu uzyskania obsługi rejestrowania.
Gdy już to zrobisz, wystarczy dodać następujący skrypt: Potrzebne są
LogSet on
żadne inne zmiany. Nie mam pojęcia, dlaczego nie jest to ustawienie domyślne, ponieważ w moich przypadkach dodaje tylko 48 bajtów do pliku!
Upewnij się, że skopiowałeś zarówno makensis, jak i pliki w katalogu Stub. Właśnie skopiowałem plik makensis.exe i wszystko działa, ale plik install.log nigdy nie został utworzony. –
'$ INSTDIR musi mieć wartość zanim zadzwonisz do tej funkcji lub nie zadziała." - od instrukcji NSIS –
Kolejna pułapka: LogSet on musi być dodany do KAŻDEJ sekcji i/lub funkcji gdzie chcesz się logować (nie tylko pewnego razu) – werner
- 1. Zapisywanie dziennika Androida do pliku
- 2. Zapisywanie do dziennika IIS z aplikacji ASP.NET
- 3. Zapisywanie pliku dziennika w języku c/C++
- 4. Zapisywanie do pliku dziennika w ASP.NET
- 5. C# - Zapisywanie dziennika przy użyciu pola tekstowego
- 6. Zapisywanie wyjątków do pliku dziennika systemu Windows
- 7. NSIS - Jak wykryć cichą instalację?
- 8. Zapisywanie danych dziennika do syslog przy użyciu log4j
- 9. Wykonanie NSIS stron i sekcji
- 10. Nazwa instalatora NSIS
- 11. NSIS - Silent Autoupdate Application
- 12. Flaga błędu instalatora NSIS
- 13. Zmiana właściwości instalatora NSIS
- 14. Podłoża NSIS według indeksu
- 15. instalatora NSIS z .NET 4.5
- 16. Wtyczka NSIS Eclipse nie działa
- 17. Instalator NSIS z .NET 4.0
- 18. deinstalator nsis nie usuwa odnośników
- 19. NSIS - pobierz i rozpakuj plik zip z Internetu
- 20. Formatowanie komunikatów dziennika jako drzewa
- 21. Szyny 4: ActiveRecord nie zapisywanie żadnych atrybutów, zapisywanie wartości domyślnych
- 22. Jak poprawnie uruchomić plik wykonywalny na końcu instalacji?
- 23. Zarejestruj instalator NSIS na Linux box
- 24. Jak wymienić domyślne logo w instalatorze NSIS?
- 25. Istniejące rozwiązania do testowania skryptu NSIS
- 26. Jak uruchamiać pliki exe w skrypcie NSIS?
- 27. NSIS Vs WiX Vs anyother Instalacja pakietu
- 28. Wykonaj polecenie Command-Line z NSIS
- 29. NSIS - Zdefiniuj InstallDir w zależności od FileExists
- 30. Jak zażądać uprawnień administratora przy użyciu NSIS?
Spróbuj [Dump_log_to_file] (http://nsis.sourceforge.net/Dump_log_to_file). – Babak