Se connecter / S'enregistrer
Votre question

Fichier copié dans un mauvais répertoire

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
8 Août 2007 16:27:23

Salut à tous,

J'ai un truc qui m'énerve depuis 2h, je viens donc appeler à l'aide !

Dans mon script, je vais rechercher sur la disquette (A:)  si le fichier license est là.

Si il y est, je copie ce fichier dans le répertoire d'installation du programme (répertoire choisi par l'utilisateur précédemment)

Or mon problème est que mon script copie mon fichier dans le dossier contenant l'installateur (Setup.exe) ><

Voici la partie de code qui copie mon fichier :

  1. // Copier le fichier tee_pso.lic
  2. CopyPasswordFile:
  3. bPasswdInstall = FALSE ;
  4. retBox = AskYesNo("Do you want to install the license file ?", YES) ;
  5. if (retBox) then
  6. szSrcDir = SRCDIR ;
  7. strResult = "A:\\" ;
  8. if (GetSystemInfo(DRIVE, nvResult, strResult)=0) then
  9. if (nvResult=IS_REMOVABLE) then
  10. szMsg = "Put the 'Password' floppy disk in drive A:\n and click on the 'Ok' button" ;
  11. MessageBox(szMsg, INFORMATION) ;
  12. TARGETDIR = svMainDirectory ;
  13. SRCDIR = "A:\\" ;
  14.  
  15. // Chercher le 'ComputerName'
  16. RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE) ;
  17. szRegKey = "SYSTEM\\CurrentControlSet\\Control\\ComputerName\\ComputerName" ;
  18. szName = "ComputerName" ;
  19. RegDBGetKeyValueEx(szRegKey, szName, nvType, svValue, nvSize) ;
  20.  
  21. // Construire le nom du fichier de licence
  22. passwordfilename = "tee_pso_" + svValue + ".lic" ;
  23. fullpasswordfilename = SRCDIR ^ passwordfilename ;
  24.  
  25. #ifdef DEBUG
  26. szMsg = "Fichier de licence recherché : " + passwordfilename + "\n\n" ;
  27. MessageBox(szMsg, INFORMATION) ;
  28. #endif
  29.  
  30. if (GetFileInfo(fullpasswordfilename, FILE_SIZE, nvResult, szResult)<0) then
  31. szMsg = "Can't find '" + passwordfilename + "' on floppy disk\n\n" ;
  32. szMsg = szMsg + " -> You will have to copy it manually\n\n" ;
  33. MessageBox(szMsg, WARNING) ;
  34. goto DisplayEndMessage ;
  35. else
  36.  
  37. // svLicenseDirectory = "C:\Program Files\TEE_PSO\Flexlm\tee_pso.lic";
  38. retBox = CopyFile(passwordfilename, "tee_pso.lic");
  39. if (retBox<0) then
  40. szMsg = "Unable to copy '" + fullpasswordfilename + "' to " + TARGETDIR ;
  41. #ifdef DEBUG
  42. NumToStr(szTemp, retBox) ;
  43. szMsg = szMsg + " Code d'erreur " + szTemp + " \n\n" ;
  44. #endif
  45. MessageBox(szMsg, SEVERE) ;
  46. abort ;
  47. endif ;
  48. bPasswdInstall = TRUE ;
  49. endif ;
  50. endif ;
  51. endif ;
  52. SRCDIR = szSrcDir ;
  53. endif;
  54.  
  55.  
  56. DisplayEndMessage:
  57. // If shared files could not be installed, then users must restart system.
  58. if (BATCH_INSTALL) then
  59. szMsg = "Some files could not be installed because they are " +
  60. "currently in use by other programs in the system. " +
  61. "To allow for proper operation of the new program you should restart" +
  62. "your system at this time." ;
  63. CommitSharedFiles(0) ;
  64. RebootDialog("Restart Windows", szMsg, SYS_BOOTMACHINE) ;
  65. else
  66. szMsg = "Setup is complete.\n\n\n" ;
  67.  
  68. // Message pour Windows NT
  69. if (!bPasswdInstall) then
  70. svMainDirectory = TARGETDIR;
  71. szMsg = szMsg + "Don't forget to copy the license file tee_pso.lic\n" ;
  72. szMsg = szMsg + " to the FLEXlm directory '" + svMainDirectory + "'\n\n" ;
  73. endif ;
  74. endif ;
  75.  
  76. MessageBeep(0) ;
  77. MessageBox(szMsg, INFORMATION) ;


Je signale que j'utilise InstallShield Professional X mais ce code n'a aucune fonction récente.

Je vous remercie d'avance pour votre aide !

Autres pages sur : fichier copie mauvais repertoire

8 Août 2007 17:05:07

et si on n'a pas de lecteur disquettes ?
8 Août 2007 17:28:06

Actuellement, tous nos clients ont demandé par disquette. (Le programme qui est installé n'est pas un programme distribué en grand nombre).

Je n'ai donc pas besoin de créer de recherche sur le CD. ;) 
Contenus similaires
a c 232 L Programmation
8 Août 2007 19:55:53

  1. retBox = CopyFile(passwordfilename, "tee_pso.lic" );


Ne faudrait-il pas indiquer l'emplacement du fichier et pas seulement mettre tee_pso.lic ?
9 Août 2007 09:20:16

J'ai essayé de remplacer tee_pso.lic par C:\Program Files\TEE_PSO\Flexlm\tee_pso.lic
C'est le répertoire d'installation proposé, j'ai fait ça pour tester mais ça me ressort l'erreur (pourtant le dossier est créé vu qu'il a installé les autres fichiers dedans)

  1. Unable to copy 'A:\tee_pso_TW010882.lic" to


Le TW010882 c'est le nom de mon PC test donc normal mais le problème c'est qu'il ne reconnait pas "INSTALLDIR" (vu qu'il ne s'affiche pas dans mon message)

Il faudrait que je remplace le répertoire par TARGETDIR mais il ne le reconnait pas.

Par contre, lorsque je clique sur "Non" lors du MsgBox qui me demande si je veux copier le fichier license, là il m'affiche bien le message "Don't forget to copy tee_pso.lic to C:\Program Files\TEE_PSO\Flexm"
Et donc là, la variable INSTALLDIR s'affiche correctement ...

a c 232 L Programmation
9 Août 2007 10:13:58

Es-tu sûr que le fichier A:\tee_pso_TW010882.lic existe bien aussi ?
9 Août 2007 11:13:28

Oui oui car lorsque je laisse mon code initial (sans changer tee_pso.lic par C:\Program Files\...), il copie bien mon fichier mais dans le dossier qui contient mon setup d'installation :/ 
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS