[InstallShield] Fichier copié au mauvais endroit

Fichier copié au mauvais endroit [InstallShield] - Divers - Programmation

Marsh Posté le 08-08-2007 à 15:44:50    

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 :
 

Code :
  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. DisplayEndMessage:
  55.    // If shared files could not be installed, then users must restart system.
  56.    if (BATCH_INSTALL) then
  57.       szMsg = "Some files could not be installed because they are " +
  58.               "currently in use by other programs in the system.  " +
  59.               "To allow for proper operation of the new program you should restart" +
  60.               "your system at this time." ;
  61.       CommitSharedFiles(0) ;
  62.       RebootDialog("Restart Windows", szMsg, SYS_BOOTMACHINE) ;
  63.    else
  64.       szMsg = "Setup is complete.\n\n\n" ;
  65.       // Message pour Windows NT
  66.       if (!bPasswdInstall) then
  67.         svMainDirectory = TARGETDIR;
  68.          szMsg = szMsg + "Don't forget to copy the license file tee_pso.lic\n" ;
  69.          szMsg = szMsg + "  to the FLEXlm directory '" + svMainDirectory + "'\n\n" ;
  70.       endif ;
  71.    endif ;
  72.    MessageBeep(0) ;
  73.    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 !

Reply

Marsh Posté le 08-08-2007 à 15:44:50   

Reply

Marsh Posté le 09-08-2007 à 05:34:00    

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


Et si tu precisais de facon explicite le dossier de destination ?

Reply

Marsh Posté le 09-08-2007 à 07:54:13    

Si je peux me permettre, lire une licence sur une disquette c'est totalement dépassé, autant rentrer un numero de série. Car accessoirement, plus aucun ordi n'a de lecteur de disquette. Ou bien ils sont très très rares

Reply

Marsh Posté le 09-08-2007 à 09:31:35    

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)  
 

Code :
  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 ...  
 
Sinon pour Gatsu35, ce n'est pas moi qui décide ^^ Je suis en job d'étudiant et je dois créer les installateurs des programmes développés par la société dans laquelle je bosse pour le moment ...  
Mais c'est vrai que c'est un peu dépassé comme méthode :/

Reply

Marsh Posté le 09-08-2007 à 11:45:03    

J'ai finalement trouvé la solution à mon problème.
 
Lorsque l'utilisateur choisit le répertoire d'installation, j'ai directement créé une variable "szRepertInstall" qui était égale à TARGETDIR.
 
Après, lors de ma 2ieme fonction (celle qui s'occupe du fichier license), je ré-annonce cette variable.
 
Puis lors de la copie de mon fichier je fais ceci :
 

Code :
  1. svLicenseDirectory = szRepertInstall ^ "tee_pso.lic";
  2. retBox = CopyFile(passwordfilename, svLicenseDirectory);


 
Et il le copie correctement :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed