2017-07-10 1 views
2

Mon programme d'installation devrait ignorer les fichiers updater lorsqu'ils existent déjà, il dit cependant que les fichiers sont utilisés par les applications et l'installation ne peut pas continuer.Ne pas tester les fichiers qui existe déjà pour être utilisé par des applications dans Inno Setup

Le programme d'installation n'a pas pu fermer automatiquement toutes les applications. Il est recommandé de fermer toutes les applications à l'aide de fichiers qui doivent être mis à jour par le programme d'installation avant de continuer.

Cliquez sur Réessayer pour essayer à nouveau, Ignorer pour continuer malgré tout, ou Abandonner pour annuler l'installation.

Les fichiers Updater dans le script de configuration sont importés comme ce

Source: "..\bin\Release\updater\*"; DestDir: "{app}\updater"; Flags: onlyifdoesntexist 

Selon la documentation du drapeau onlyifdoesntexist doit veiller à ce que les fichiers ne sont pas patchés dans l'avenir.

J'ai même essayé d'enlever tout autre que le répertoire updater pour vous assurer que ces fichiers sont à l'origine du problème. Des idées?

Voici le fichier journal

2017-07-10 14:12:59.229 Log opened. (Time zone: UTC+02:00) 
2017-07-10 14:12:59.229 Setup version: Inno Setup version 5.5.9 (u) 
2017-07-10 14:12:59.229 Original Setup EXE: C:\Users\pikausp\AppData\Roaming\TMEgadget4\updater.exe 
2017-07-10 14:12:59.229 Setup command line: /SL5="$F0962,149593,121344,C:\Users\pikausp\AppData\Roaming\TMEgadget4\updater.exe" /SPAWNWND=$140E9A /NOTIFYWND=$C0CAA /VERYSILENT 
2017-07-10 14:12:59.229 Windows version: 10.0.14393 (NT platform: Yes) 
2017-07-10 14:12:59.229 64-bit Windows: Yes 
2017-07-10 14:12:59.229 Processor architecture: x64 
2017-07-10 14:12:59.229 User privileges: Administrative 
2017-07-10 14:12:59.229 64-bit install mode: No 
2017-07-10 14:12:59.231 Created temporary directory: C:\Users\pikausp\AppData\Local\Temp\is-88HJM.tmp 
2017-07-10 14:12:59.307 RestartManager found an application using one of our files: TMEgadget.Updater 
2017-07-10 14:12:59.307 Can use RestartManager to avoid reboot? Yes (0) 
2017-07-10 14:12:59.311 Starting the installation process. 
2017-07-10 14:12:59.313 Shutting down applications using our files. 
2017-07-10 14:13:29.359 Some applications could not be shut down. 
2017-07-10 14:13:29.359 Message box (Abort/Retry/Ignore): 
          Setup was unable to automatically close all applications. It is recommended that you close all applications using files that need to be updated by Setup before continuing. 

          Click Retry to try again, Ignore to proceed anyway, or Abort to cancel installation. 
2017-07-10 14:13:34.796 User chose Abort. 
2017-07-10 14:13:34.796 User canceled the installation process. 
2017-07-10 14:13:34.796 Rolling back changes. 
2017-07-10 14:13:34.797 Starting the uninstallation process. 
2017-07-10 14:13:34.797 Uninstallation process succeeded. 
2017-07-10 14:13:34.797 Deinitializing Setup. 
2017-07-10 14:13:34.802 Log closed. 
+0

Je ne peux pas reproduire ce. Montrez-nous un fichier journal de [mcve] (une seule installation de fichier). –

+0

@MartinPrikryl mis à jour la question, cela devrait être ok fromat je crois? – pikausp

+0

Je vais ajouter les journaux dans un moment – pikausp

Répondre

3

Le onlyifdoesntexist est en effet pas évalué à des fins de vérification des fichiers utilisés par les applications en cours d'exécution.

Mais le Check parameter est évalué.

Ainsi, vous pouvez mettre en œuvre le test pour l'existence comme ceci:

[Files] 
Source: "..\bin\Release\updater\*"; DestDir: "{app}\updater"; Check: OnlyIfDoesntExist 

[Code] 

function OnlyIfDoesntExist: Boolean; 
begin 
    Result := not FileExists(ExpandConstant(CurrentFilename)); 
end; 

Une autre façon est de mettre créative le CloseApplicationsFilter directive de ne pas inclure les fichiers dans le dossier updater.