IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Outils Delphi Discussion :

[InnoSetup]Vérifier si un fichier existe


Sujet :

Outils Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 47
    Points : 25
    Points
    25
    Par défaut [InnoSetup]Vérifier si un fichier existe
    Bonsoir ^^, mon problème est le suivant, je voudrait savoir si il était possible
    de vérifier si un fichier existe ou non lorsque on définie le répertoire d'installation, si un fichier existe dans ce répertoire.

    Merci d'avance

  2. #2
    Membre habitué Avatar de Rahim-US
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2009
    Messages : 151
    Points : 134
    Points
    134
    Par défaut
    Salut
    essai avec la function FileExists FileOrDirExists

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par Rahim-US Voir le message
    Salut
    essai avec la function FileExists FileOrDirExists
    Merci de ta réponse, mais est-ce possible de vérifier si le dit fichier existe quand il valide le dossier, et que ca lui empeche de cliquer sur suivant si l'appli en question n'existe pas

  4. #4
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 418
    Points
    1 418
    Par défaut
    oui il faut vérifier dans l'evenement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function NextButtonClick(CurPageID: Integer): Boolean;
    ainsi si on renvoie false l'installeur reste sur la page
    Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par ouiouioui Voir le message
    oui il faut vérifier dans l'evenement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function NextButtonClick(CurPageID: Integer): Boolean;
    ainsi si on renvoie false l'installeur reste sur la page
    Oui mais est ce qu'il y a une fonction pour savoir si il a choisis un répertoire ou non ?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    toujour personne pour mon problème ?

  7. #7
    Membre habitué Avatar de Rahim-US
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2009
    Messages : 151
    Points : 134
    Points
    134
    Par défaut
    Bonjour,

    voila ce que j'ai pu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    function NextButtonClick(CurPageID: Integer): Boolean;
    var
    	aExecFile:	String;
    begin
      if CurPageID = wpSelectdir then
      begin
        aExecFile := 'C:\Program Files\My Program\MyProg.exe';
        if FileExists(aExecFile) then
        begin
          MsgBox('Erreur le fichier exist déja dans le dossier d''installation', mbError, MB_OK)
          Exit;
        end
          Result := False;
      end
      Result := True;
    end;
    mais la y a un petit problème, j'ai pas pu mettre le code pour un répertoire variable, just pour verifié un fichier dans un répertoire prédéfint.

    s'il y a quelq'un qui peux le modifié, pour moi je cherche encore.
    @+

  8. #8
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 418
    Points
    1 418
    Par défaut
    j'ai pas testé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function NextButtonClick(CurPageID: Integer): Boolean;
    var
        aExecFile:    String;
    begin
      Result := True;
      if CurPageID = wpSelectdir then
      begin
        aExecFile := ExpandConstant('{app}') + '\MyProg.exe';
        if FileExists(aExecFile) then
        begin
          MsgBox('Erreur le fichier exist déja dans le dossier d''installation', mbError, MB_OK);
          Result := False;
        end
      end
    end;
    Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.

  9. #9
    Membre habitué Avatar de Rahim-US
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2009
    Messages : 151
    Points : 134
    Points
    134
    Par défaut
    Citation Envoyé par ouiouioui Voir le message
    j'ai pas testé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function NextButtonClick(CurPageID: Integer): Boolean;
    var
        aExecFile:    String;
    begin
      Result := True;
      if CurPageID = wpSelectdir then
      begin
        aExecFile := ExpandConstant('{app}') + '\MyProg.exe';
        if FileExists(aExecFile) then
        begin
          MsgBox('Erreur le fichier exist déja dans le dossier d''installation', mbError, MB_OK);
          Result := False;
        end
      end
    end;
    Trés bien ouiouioui ça marche trés bien comme ça, j'ai testé et ça fonctionne.

  10. #10
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par ouiouioui Voir le message
    j'ai pas testé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function NextButtonClick(CurPageID: Integer): Boolean;
    var
        aExecFile:    String;
    begin
      Result := True;
      if CurPageID = wpSelectdir then
      begin
        aExecFile := ExpandConstant('{app}') + '\MyProg.exe';
        if FileExists(aExecFile) then
        begin
          MsgBox('Erreur le fichier exist déja dans le dossier d''installation', mbError, MB_OK);
          Result := False;
        end
      end
    end;
    Merci ouiouioui pour ton code, tester et approuvé ^^

  11. #11
    Membre habitué Avatar de Rahim-US
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2009
    Messages : 151
    Points : 134
    Points
    134
    Par défaut
    Re:

    et si tu veux que l'utilisateur choisi un nouveau dossier sans que le fichier existe dans ce dossier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    function NextButtonClick(CurPageID: Integer): Boolean;
    var
        aExecFile, bExecDir:    String;
    begin
      Result := True;
      if CurPageID = wpSelectdir then
      begin
        aExecFile := ExpandConstant('{app}') + '\MyProg.exe';
        bExecDir := ExpandConstant('{app}');
        if DirExists(bExecDir) then
        begin
          MsgBox('Erreur le dossier d''installation existe déja!', mbError, MB_OK);
          Result := False;
          Exit
        end
        if FileExists(aExecFile) then
        begin
          MsgBox('Erreur le fichier existe déja dans le dossier d''installation!', mbError, MB_OK);
          Result := False;
        end
      end
    end;
    voila @+

  12. #12
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 418
    Points
    1 418
    Par défaut
    Citation Envoyé par Rahim-US Voir le message
    Re:

    et si tu veux que l'utilisateur choisi un nouveau dossier sans que le fichier existe dans ce dossier.
    c'est une fonction déjà présente:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [Setup]
    ;Valid values: auto, yes, or no  
    ;Default value: auto  
    DirExistsWarning=yes
    Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.

  13. #13
    Membre habitué Avatar de Rahim-US
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2009
    Messages : 151
    Points : 134
    Points
    134
    Par défaut
    Citation Envoyé par ouiouioui Voir le message
    c'est une fonction déjà présente:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [Setup]
    ;Valid values: auto, yes, or no  
    ;Default value: auto  
    DirExistsWarning=yes
    oui, mais la on peut passé et l'installé sur le meme dossier, mais avec le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    function NextButtonClick(CurPageID: Integer): Boolean;
    var
        aExecFile, bExecDir:    String;
    begin
      Result := True;
      if CurPageID = wpSelectdir then
      begin
        aExecFile := ExpandConstant('{app}') + '\MyProg.exe';
        bExecDir := ExpandConstant('{app}');
        if DirExists(bExecDir) then
        begin
          MsgBox('Erreur le dossier d''installation existe déja!', mbError, MB_OK);
          Result := False;
          Exit
        end
        if FileExists(aExecFile) then
        begin
          MsgBox('Erreur le fichier existe déja dans le dossier d''installation!', mbError, MB_OK);
          Result := False;
        end
      end
    end;
    on peut pas l'installé tanque le dossier d'installation par défaut existe + si le fichier qu'on a spécifié dans le code existe lui aussi dans le dossier.

  14. #14
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    Par contre j'ai un petit soucis, quand je veux choisir le Dossier de mon programme qui est comme le nom de l'installateur c'est a dire 'test', alors il me mettra C:\Programm Files\test\test\ le fait qu'il rajoute un 'test' est très embêtant vue que si un utilisateur peux très expérimenté utilise mon installateur va être perdu ^^

    Merci d'avance ...

  15. #15
    Membre habitué Avatar de Rahim-US
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2009
    Messages : 151
    Points : 134
    Points
    134
    Par défaut
    Citation Envoyé par luffydu22 Voir le message
    Par contre j'ai un petit soucis, quand je veux choisir le Dossier de mon programme qui est comme le nom de l'installateur c'est a dire 'test', alors il me mettra C:\Programm Files\test\test\ le fait qu'il rajoute un 'test' est très embêtant vue que si un utilisateur peux très expérimenté utilise mon installateur va être perdu ^^

    Merci d'avance ...
    J'ai pas bien compris, si tu peux m'expliqué plus ton problème.

  16. #16
    Membre habitué Avatar de Rahim-US
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2009
    Messages : 151
    Points : 134
    Points
    134
    Par défaut
    H!;

    bon voila ton code que j'ai modifié; la tu n'as plus de repertoire en double.
    j'ai supprimé la page de wpselectdir et la remplacé avec une autre perso pour pouvoir supprimé le repertoire double.

    voila le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    [Setup]
    ; NOTE: The value of AppId uniquely identifies this application.
    ; Do not use the same AppId value in installers for other applications.
    ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
    AppId={{DC70849C-6F27-4D9F-9F38-0034E8083761}
    AppName=Launcher Millenium
    AppVerName=Launcher Millenium
    AppPublisher=Millenium Serveur
    AppPublisherURL=http://www.millenium-servers.com/
    AppSupportURL=http://www.millenium-servers.com/
    AppUpdatesURL=http://www.millenium-servers.com/
    DefaultGroupName=Launcher Millenium
    CreateAppDir=no
    OutputBaseFilename=Install
    WizardImageFile = C:\wamp\mainImage.bmp
    WizardSmallImageFile = C:\wamp\wow.bmp
    SetupIconFile=C:\Users\DarkMaster\Documents\Visual Studio 2008\Projects\test\Release\icon.ico
    Compression=lzma
    SolidCompression=yes
     
    [Languages]
    Name: "french"; MessagesFile: "compiler:Languages\French.isl"
     
    [Tasks]
    Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
     
    [Files]
    Source: "C:\Users\DarkMaster\Documents\Visual Studio 2008\Projects\test\Release\final\Launcher.exe"; DestDir: "{reg:HKLM\SOFTWARE\Blizzard Entertainment\World of Warcraft,GetInstallPath}"; Flags: ignoreversion recursesubdirs createallsubdirs
    ;Source: "C:\Users\DarkMaster\Documents\Visual Studio 2008\Projects\test\Release\final\progress.png"; DestDir: "{reg:HKLM\SOFTWARE\Blizzard Entertainment\World of Warcraft,GetInstallPath}"; Flags: ignoreversion
    ;Source: "C:\Users\DarkMaster\Documents\Visual Studio 2008\Projects\test\Release\final\progress_back.png"; DestDir: "{reg:HKLM\SOFTWARE\Blizzard Entertainment\World of Warcraft,GetInstallPath}"; Flags: ignoreversion
    Source: "C:\Users\DarkMaster\Documents\Visual Studio 2008\Projects\test\Release\pre-release\phonon4.dll"; DestDir: "{sys}";
    Source: "C:\Users\DarkMaster\Documents\Visual Studio 2008\Projects\test\Release\pre-release\QtCore4.dll"; DestDir: "{sys}";
    Source: "C:\Users\DarkMaster\Documents\Visual Studio 2008\Projects\test\Release\pre-release\QtGui4.dll"; DestDir: "{sys}";
    Source: "C:\Users\DarkMaster\Documents\Visual Studio 2008\Projects\test\Release\pre-release\QtNetwork4.dll"; DestDir: "{sys}";
    Source: "C:\Users\DarkMaster\Documents\Visual Studio 2008\Projects\test\Release\pre-release\QtWebKit4.dll"; DestDir: "{sys}";
    ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
     
    [Icons]
    Name: "{group}\Launcher Millenium"; Filename: "{reg:HKLM\SOFTWARE\Blizzard Entertainment\World of Warcraft,GetInstallPath}\Launcher.exe"
    Name: "{commondesktop}\Launcher Millenium"; Filename: "{reg:HKLM\SOFTWARE\Blizzard Entertainment\World of Warcraft,GetInstallPath}\Launcher.exe"; Tasks: desktopicon
     
    [Registry]
    Root: HKCU; SubKey: "Software\Launcher Millenium"; ValueType: string; ValueName: "Launcher Millenium"; ValueData: "{reg:HKCU\Software\Launcher Millenium,Launcher Millenium}{reg:HKLM\SOFTWARE\Blizzard Entertainment\World of Warcraft,GetInstallPath}"; Flags : createvalueifdoesntexist deletevalue uninsdeletekey
    ;Root: HKCU; SubKey: "Software\Launcher Millenium"; ValueType: string; ValueName: "Launcher Millenium"; ValueData: "{reg:HKCU\Software\Launcher Millenium,Launcher Millenium}{reg:HKLM\SOFTWARE\Blizzard Entertainment\World of Warcraft,GetInstallPath}"
     
    [Run]
    Filename: "{reg:HKLM\SOFTWARE\Blizzard Entertainment\World of Warcraft,GetInstallPath}\Launcher.exe"; Description: "{cm:LaunchProgram,Launcher Millenium}"; Flags: nowait postinstall skipifsilent
     
     
    (code)
    var
    pageWoWDir: TInputDirWizardPage;
    md : String;
     
    procedure InitializeWizard();
    begin
      pageWoWDir := CreateInputDirPage(wpSelectComponents, 'Dossier de destination',
                                                           'Où Launcher Millenium doit-il être installé?',
                                                           'L''assistant va installer Launcher Millenium dans le dossier suivant' #13#13 'Pour continuer,appuyez sur Suivant. Si vous souhaitez choisir un dossier différent, appuyez sur Parcourir.', False, '');
      pageWoWDir.add('Dossier d''installation de World of Warcraft');
      if (not RegQueryStringValue(HKLM, 'SOFTWARE\Blizzard Entertainment\World of Warcraft', 'InstallPath', md)) then
      md := AddBackslash(ExpandConstant('{pf}')) + '\Blizzard Entertainment'+'\World of Warcraft'; //c'est dans le cas ou l'assistant ne trouve rien dans la BDR (chemin d'installation par défaut)
      if length(md) > 0 then
        pageWoWDir.Values[0] := md
     
    end;
     
    function NextButtonClick(CurPageID: Integer): Boolean;
    begin
      RegWriteStringValue(HKLM, 'SOFTWARE\Blizzard Entertainment\World of Warcraft','GetInstallPath', ExpandConstant(pageWoWDir.Values[0]));
      Result := True;
      if CurPageID = pageWoWDir.ID then begin
        if DirExists(pageWoWDir.Values[0]) and FileExists(AddBackslash(pageWoWDir.Values[0]) + 'wow.exe') then begin
        result := true
        end
        else
        begin
          MsgBox('Merci de mettre le launcher dans le même dossier que World of Warcraft.', mbInformation, MB_OK);
          result := false;
        end;
      end;
    end;
     
    procedure DeinitializeSetup();
    begin
    RegDeleteValue(HKLM, 'SOFTWARE\Blizzard Entertainment\World of Warcraft','GetInstallPath');
    end;
    voila.

Discussions similaires

  1. vérifier qu'un fichier existe
    Par youp_db dans le forum C
    Réponses: 5
    Dernier message: 16/05/2007, 01h22
  2. Vérifier si un fichier existe
    Par iwf-fr dans le forum Langage
    Réponses: 2
    Dernier message: 10/12/2006, 16h32
  3. Vérifier si un fichier existe déjà
    Par Kr00pS dans le forum C
    Réponses: 9
    Dernier message: 16/07/2006, 14h29
  4. Réponses: 3
    Dernier message: 14/06/2006, 10h06
  5. vérifier si un fichier existe
    Par shirya dans le forum C++
    Réponses: 5
    Dernier message: 19/12/2005, 09h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo