script, programme question d'un débutant

zacromatafalgar

Membre émérite
Il est possible d'inclure le fichier zip dans le dossier "Resources" d'une application applescript, pour cela il faut enrergistrer ton script au format Progiciel (case à cocher dans la fenêtre d'enregistrement) puis faire un clic droit sur l'icône de l'application, choisir l'article de menu "Afficher le contenu du paquet" dans le menu contextuel qui s'affiche.

Une fenêtre au nom de l'application s'ouvre dans laquelle se trouve un dossier intitulé "Contents", ouvre ce dossier et, dans la nouvelle fenêtre, ouvre le dossier "Resources" et dépose l'archive zip à l'intérieur.

Pour que cela fonctionne il faut lancer l'application à partir de l'icône et non plus à partir de l'éditeur de script.

Plus tard il faudra bien sûr enregistrer ton application en lecture seule pour que l'on ne puisse plus l'ouvrir et protéger ainsi ton mot de passe mais seulement lorsque ton appli sera au point (n'oublie pas d'en garder une copie modifiable)

Le code compet :

Bloc de code:
property pathToAppFolder : (path to applications folder) as string
property dossier1 : (pathToAppFolder & "Dossier1:")
property dossier4 : (pathToAppFolder & "Dossier4:")
property pass : "essaiPass"

on run
	
	set thePass to text returned of (display dialog "mot de passe:" default answer "" with hidden answer)
	
	considering case --respect de la casse
		if thePass = pass then --si le mot de passe est bon
			set theArchive to (path to resource "DossierTest.zip")--####
			
			do shell script "/usr/bin/unzip -u " & (quoted form of POSIX path of theArchive) & " -d " & (quoted form of POSIX path of pathToAppFolder)
			
			--on procède à la duplication
			tell application "Finder"
				duplicate entire contents of folder (dossier1 as alias) to (dossier4 as alias) replacing yes
			end tell
			
		else --sinon
			--message d'erreur
			beep
			display dialog "Mauvais mot de passe"
		end if
	end considering
	
	
end run
Edit : remplace le nom de l'archive par le bon à la ligne --####
 

zacromatafalgar

Membre émérite
je n'arrive pas à prendre un deuxieme dossier Quelle est mon erreur?

--on procède à la duplication
tell application "Finder"
duplicate entire contents of folder (D1 as alias) to (D4 as alias) & (D2 as alias) to (D5 as alias) replacing yes
end tell


la premiere fois j'avais ecrit :

--on procède à la duplication
tell application "Finder"
duplicate entire contents of folder (D1 as alias) to (D4 as alias) replacing yes
duplicate entire contents of folder (D2 as alias) to (D5 as alias) replacing yes
end tell

mais marche pas non plus?

PS : pour le zip il est sur dvd quel est le chemin standard?
La première syntaxe ne peut fonctionner en revanche la seconde fonctionne si tu as correctement ajouté les properties…;)
 

LACK

Membre confirmé
21 Novembre 2006
109
2
Quel c.., j'avais pas vu un espace qui manquait!!! (avec tous ces codes comment tu fais pour pas faire d'erreurs! ;) )


J'ai choisi la premiere version car ce sont 2 scripts differrents.

Donc le ZIP dans Contents.

Pour ca j'utilise ton premier script "zip" sans modification? et j'enregistre en progiciel et je fais glisser le ZIP après, c'est tout?

Merci

Ps : donc plus besoin du chemin mais je suis curieux le chemin du DVD tu l'ecris comment?
 

LACK

Membre confirmé
21 Novembre 2006
109
2
Bien si en fait je dois ecrire un chemin si je garde ton script original. Mais comment faire puisque Contents n'existe pas encore! ou bien le script est pas bon?

set theArchive to "Chemin:de:ton:Test.zip"
set theTarget to (path to applications folder) as string
do shell script "/usr/bin/unzip -u " & (quoted form of POSIX path of theArchive) & " -d " & (quoted form of POSIX path of theTarget)
 

zacromatafalgar

Membre émérite
Bien si en fait je dois ecrire un chemin si je garde ton script original. Mais comment faire puisque Contents n'existe pas encore! ou bien le script est pas bon?

set theArchive to "Chemin:de:ton:Test.zip"
set theTarget to (path to applications folder) as string
do shell script "/usr/bin/unzip -u " & (quoted form of POSIX path of theArchive) & " -d " & (quoted form of POSIX path of theTarget)
Commence par enregistrer au format progiciel puis met l'archive dans le dossier "Resources", maintenant retourne au script et modifie le comme suit :

Bloc de code:
set theArchive to (path to resource "DossierTest.zip")--remplace le nom
set theTarget to (path to applications folder) as string
do shell script "/usr/bin/unzip -u " & (quoted form of POSIX path of theArchive) & " -d " & (quoted form of POSIX path of theTarget)
 

LACK

Membre confirmé
21 Novembre 2006
109
2
J'étais entrain d'editer mon mess car j'ai vu que tu l'avais adapté après désolé.
 

zacromatafalgar

Membre émérite
Quel c.., j'avais pas vu un espace qui manquait!!! (avec tous ces codes comment tu fais pour pas faire d'erreurs! ;) )

Ps : donc plus besoin du chemin mais je suis curieux le chemin du DVD tu l'ecris comment?
Ben si j'en fait des erreurs… :siffle:

Le chemin du DVD s'écrit : "NomDvd:" tout simplement
 

LACK

Membre confirmé
21 Novembre 2006
109
2
Je viens de le faire.

là il est en cours.

Il m'écrit pour le moment dans Applications, __MACOSX, ca doit etre juste temporaire le temps qu'il extrait tous!

Par contre on voit rien de ce qu'il fait peut on avoir une fenetre qui montre l'avancement de l'extraction comme celle qui montre quand on copie?

merci

edit : le script plante à la fin!!! le fichier est bien là mais __MACOSX reste aussi
 

LACK

Membre confirmé
21 Novembre 2006
109
2
Finalement je crois que je vais juste faire un script qui sera sur le DVD avec le Zip à coté
 

zacromatafalgar

Membre émérite
edit : le script plante à la fin!!! le fichier est bien là mais __MACOSX reste aussi
Essaie avec une petite archive, je pense que, si ton archive est trop grosse, il faille rajouter un timeout.
Quel est le message d'erreur ?
 

LACK

Membre confirmé
21 Novembre 2006
109
2
Ca doit etre ca! la j'avais mis une archive de + de 3Go ;)

c'est pas grave je vais pas mettre de script juste un fichier texte disant qu'il faut extraire dans Applications
 

zacromatafalgar

Membre émérite
Ca doit etre ca! la j'avais mis une archive de + de 3Go ;)

c'est pas grave je vais pas mettre de script juste un fichier texte disant qu'il faut extraire dans Applications
Si l'archive est bien extraite il suffit de jeter le dossier "__MACOSX" à l'aide de :
Bloc de code:
			tell application "Finder" to delete (pathToAppFolder & "__MACOSX") as alias
que tu places après la ligne commençant par "do shell script…"