InnoSetup - Beim Kompilieren wurde eine Fehlermeldung "Datei in Verwendung durch einen anderen Prozess ..." angezeigt

8

Obwohl ich InnoSetup wirklich mag, habe ich seit einiger Zeit mit dieser irrigen Nachricht gelitten, aber meine Frustration hat neue Höhen erreicht. Es gibt zahlreiche Beiträge, die sich über dieses Problem beschweren, was sicherlich ein InnoSetup-Bug ist, aber keine nützlichen Work-arounds, die ich finden kann.

Ich habe ein sehr einfaches (signiertes) Setup, das nur einige Dateien kopiert und eine Verknüpfung erstellt. Es enthält nicht einmal eine ausführbare Datei. Wenn ich versuche, das Setup zu kompilieren, erhalte ich die Meldung "Der Prozess kann nicht auf die Datei zugreifen, weil sie von einem anderen Prozess verwendet wird" (normalerweise bekomme ich das Setup immer innerhalb von 3 Versuchen), aber jetzt scheint es sinnlos Nach vielen. viele Versuche. Die Datei, die "in Verwendung" ist, wird nicht aus dem InnoSetup-Ausgabe- oder Fehlerdialog gelöscht. Es laufen definitiv keine konkurrierenden Prozesse. (Ich habe den Rechner neu gestartet und erhalte immer noch diese Nachricht).

Irgendwelche Ideen zur Lösung dieses Problems werden sehr geschätzt.

Hier ist der komplette Setup-Code - er ist signiert, aber das ist kein Problem mit anderen Setups, die ich mit der gleichen Signatur erstellt habe.

%Vor%     
ron tornambe 13.03.2013, 22:06
quelle

7 Antworten

4

Dies ist kein Fehler, das ist nur schlechtes Design der Anwendung (oder schlechte Dokumentation):)

Verwenden Sie die Anweisung OutputDir in Ihrem Abschnitt [Setup] , um dieses falsche Verhalten zu vermeiden.

%Vor%

OutputDir gibt das Verzeichnis "output" für das Skript an, wo der Setup-Compiler die resultierenden SETUP.* -Dateien ablegt. Standardmäßig erstellt es ein Verzeichnis mit dem Namen Output unter dem Verzeichnis, das das Skript dafür enthält.

Sie fragen warum?

Wenn Sie OutputDir nicht in Ihrer Skriptdatei verwenden (und viele Leute benutzen sie nicht), versucht Inno Setup, das resultierende Setup im Ordner "userdocs:" zu erstellen, was auf allen Windows-Systemen eine Menge Probleme verursacht / p>

Verwenden Sie diesen Parameter immer, auch wenn Sie das Setup im aktuellen Ordner haben möchten, verwenden Sie in diesem Fall:

%Vor%     
Slappy 14.03.2013, 12:42
quelle
25

Ich hatte das gleiche Problem. Dies liegt daran, dass McAfee Antivirus die Echtzeitsuche für die EXE-Datei ausführt, die kompiliert wird ... Da es nicht möglich ist, ein Verzeichnis vom Echtzeit-Scan auszuschließen, habe ich es in McAfee SecurityCenter heruntergefahren, und jetzt ist es gut. Hoffe diese Hilfe

    
Bonrry 21.11.2013 14:37
quelle
4

Das Problem besteht oft darin, dass ein Explorer-Fenster geöffnet wird, in dem der Ordner angezeigt wird, in dem sich die Ausgabedateien befinden.

Der Explorer öffnet die ausführbare Datei kontinuierlich, während sie versucht, ihr Symbol und andere Metadaten abzurufen. Schließen Sie alle geöffneten Explorer-Fenster, die den Ausgabeordner anzeigen, und versuchen Sie es erneut.

Aus diesem Grund sollten Sie Ihre inno-Setup-Datei am besten über die Befehlszeile oder einen Teil eines visuellen Studios oder eines anderen automatisierten Build-Prozesses ausführen.

    
braindigitalis 26.05.2015 15:35
quelle
1

Ich habe OutputDir = x:] Setup, aber der Fehler tritt immer noch auf. Wenn ich meinen Rechner neu starte und dann als 1. Task baue, funktioniert der Build.

    
Joginder S Nahil 09.09.2013 14:56
quelle
1

Win 7 Pro / 64, InnoSetup 5.5.5 (a): Ich hatte genau die gleichen Probleme mit der InnoSetup Compilierung. Nach dem Ändern von Ordner-Eigenschaften in Projekten und die Ausgabe durch Aufhebung der Freigabe sie alle funktioniert gut. Fazit - es ist besser, InnoSetup nicht in freigegebenen Ordnern zu verwenden.

    
Włodzimierz Bień 18.08.2016 07:53
quelle
0

Ich hatte das, wenn OutputDir="." (Das bedeutet, dass die Ausgabe in dasselbe Verzeichnis wie die Quelldateien gestellt wird). Es würde jeden zweiten Build fehlschlagen.

Ich habe es behoben, indem ich mein Powershell-Build-Skript geändert habe, um das gesamte Ausgabeverzeichnis zu löschen, dann meine App erstellt (dieses Verzeichnis wurde automatisch erstellt) und dann iscc zum Erstellen der setup.exe

ausgeführt     
dbruning 13.02.2015 03:53
quelle
0

Der Fehler kann verursacht werden, weil Sie versuchen, einen Ordner zu kopieren, der mit einem Windows-Dienst verknüpft ist.

Um dieses Problem zu lösen, verwenden Sie den Abschnitt [Code] , anstatt den Ordner in [Dateien] zu setzen. Damit können Sie prüfen, ob der Ordner existiert, den zugehörigen Windows-Dienst schließen und schließlich den Ordner kopieren.

    
Louis Cyr 01.09.2015 16:06
quelle

Tags und Links