Mam skrypt Inno Setup, który instaluje moją aplikację i towarzyszące jej pliki. W niektórych systemach wymagane jest ponowne uruchomienie, a na niektórych nie. Chciałbym poznać przyczynę wymaganego restartu. Jak zrobić to najbardziej inteligentnie? Dziękuję bardzo.InnoSetup: Znajdź przyczynę restartu
Odpowiedz
Dla celów debugowania można zajrzeć do środka
HKLM\System\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations
, aby zobaczyć, czy są jakieś ruchy/zmienia nazwę/usuwa kolejce do następnego restartu.
To naprawdę pomogło, idealne rozwiązanie, dziękuję bardzo! – tmighty
Zastosowanie /LOG
po uruchomieniu instalacji, a następnie zajrzeć do pliku dziennika, który generuje (domyślnie w %TEMP%
). Powinien dość jasno pokazać, które pliki zostały umieszczone w kolejce do zamiany przy ponownym uruchomieniu, lub które z innych przyczyn spowodowały żądanie ponownego uruchomienia.
Zazwyczaj restartuje są wywołane przez nadużywanie restartreplace
bez użycia coś AppMutex
aby upewnić się, że wniosek został poprawnie zamknięty przed instalacją lub z subinstalls wykonywanych podczas [Run]
.
Tylko do debugowania? Możesz zajrzeć do HKLM \ System \ CurrentControlSet \ Control \ Session Manager \ PendingFileRenameOperations, aby sprawdzić, czy w kolejce znajdują się ruchy/usunięcia oczekujące na ponowne uruchomienie. –
@Alex, nie ma bezpośredniego sposobu na określenie go ze skryptu InnoSetup, więc może to być odpowiedź. – TLama
Tak, ustaw jako "odpowiedź". – tmighty