zu 1)
Die Direktive im [Setup]-Abschnitt lautet so:
AlwaysRestart=false
Dann sollte er nicht mehr automatisch neu starten. Vielleicht hast du es einfach nur falsch geschrieben?
zu 2)
Ich würde mir an deiner Stelle evtl. ein kleines eigenes Hilfs-Tool (in Delphi o.Ä.) schreiben, das deine Post-Install Bedingungen checkt (Teamviewer läuft, wenn nicht, wartet DEIN Tool solange, bis er eben läuft) und dann die entsprechenden Aktionen wie z.B. den Teamviewer beenden selbst durchführt und sich danach beendet. Dann kannst du dieses kleine Hilfs-Tool mit dem Installer einkompiliert mitliefern, während der Installation in ein Temp-Verzeichnis extrahieren, als Postinstall ausführen und InoSetup anweisen, auf Beendigung von deinem Tool zu warten, bevor sich die Installation selbst beendet, z.B. so ähnlich im [Code]-Abschnitt:
Delphi-Quellcode:
// INNO-Setup Direktive => Wird ausgeführt, wenn sich der Installationschritt ändert.
procedure CurStepChanged(CurStep: TSetupStep);
begin
// Post install steps
if (CurStep = ssPostInstall) then
begin
Exec('TEMP_PFAD_ZU_DEINEM_HILFSTOOL', '', '', SW_SHOW, ewWaitUntilTerminated, returnCode);
//..returnCode auswerten...
end;
end;
Dein Tool läuft damit standardmäßig mit den gleichen Rechten wie der Installer, also meistens mit Adminrechten, somit kannst du mit deinem Tool relativ viel machen wie z.B. eben den Teamviewer beenden etc.
Dies würde bei dem vorherigen Vorschlag, das ganze von deinem eigentlichen Programm durchführen zu lassen, etwas problematischer werden (wenn auch nicht unlösbar
).
Ich mache das bei meinen Installern meistens so, wenn es in InnoSetup-Pascalscript zu umständlich werden würde, sehr spezielle Sachen zu erledigen, die nicht zum Standard-Paket einer Standard-Installation gehören.
Ein mitgeliefertes Tool, das der Installer am Ende der Installation startet hat eben den Vorteil, dass du bei der Programmierung des Tools nicht auf die teilweise sehr eingeschränkte PascalScript-Funktionalität von InnoSetup angewiesen bist.
Du musst allerdings darauf achten, dass sich dein Hilfs-Tool unter allen Umständen korrekt selbst beendet und evtl. Fehlermeldungen am Besten über den Returncode lösen.
Sollte dein Hilfs-Tool hängen und sich nicht selbst beenden, hängt auch die Ganze Installation bis zum St. Nimmerleinstag
Von dem Ansatz, einfach mal ein paar "Pausen" geschätzter Länge einzubauen, würde ich komplett abraten. Das führt früher oder später zu Problemen, da eine Pause halt einfach nur geraten ist, wann das Programm (Teamviewer) installiert und gestartet sein könnte. Das kann aber von Rechner zu Rechner immens unterschiedlich sein. Sollte dann deine Pause mal auf einem Rechner nicht ausreichen, knallt deine ganze Installation.
Im Gegenzug dazu nervt eine sehr lang gewählte, sichere Pause bei jeder Installation, bei der sie evtl. gar nicht nötig wäre.