Skapa installerare med Applescript?

Tråden skapades och har fått 16 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • 2008-08-15 22:42

Jag funderar på att börja bygga installerare i Applescript. finns det några synpunkter på det?
Principen är denna:

set myMe to path to me as string
set myTestfile to alias (myMe & "contents:testmapp:avatar2122_1.gif")
tell application "Finder"
	display dialog "Filen ”avatar2122_1.gif” kommer att läggas på skrivbordet och ersätta den fil med samma namn som eventuellt redan finns där."
	duplicate myTestfile to desktop with replacing
end tell

Jag bifogar en "installerare" som lägger min avatar på skrivbordet.

Det funkar, men installerare i sig själv är svårt, eftersom det ofta finns stora olikheter mellan de maskiner man ska installera på och då brukar det alltid vara något som går fel...

Ni har ju en rätt kontrollerad miljö så det bör vara relativt sett enklare hos er

Installerare är ett stort ord.
Vad menar du med installerare? Ska du nysa ut tusentals filer i hela systemet (som Adobe) eller ska du bara kopiera en fil någonstans?

Jag bygger själv installerare med Packagemaker och JAMF Composer.

  • Medlem
  • 2008-08-16 11:21

Spelar antalet filer någon roll för om man kallar det installerare? Men det är ett antal filer som ska ut till olika ställen i datorn.

Eftersom Applescript är något jag kan få att göra det jag vill tänkte jag hålla mig till det. Men om det finns andra saker som är enklare kan det förstås vara en idé.

Jag kan inte säga att Package Maker är enklare, Composer är väldigt enkel att använda.
Fördelen är att du får ett .pkg i slutet som du sedan kan distribuera via ARD.

Composer "spelar in" ditt filsystem innan, sedan placerar du ut dina filer, sedan spelar den in igen och visar dig skillnaden. Den kan du sedan spara ner som en installerare.

En sak du ska tänka på att det är klurigt att placera saker i användarens hemmapp.
För det krävs shellscript.

  • Medlem
  • 2008-08-16 13:50
Ursprungligen av Mattias Hedman:

En sak du ska tänka på att det är klurigt att placera saker i användarens hemmapp.
För det krävs shellscript.

eller applescript...

Ursprungligen av Baron:

eller applescript...

Jaså det funkar med AppleScript också? Synd att jag inte kan det då.
Men jag klarar mig med schellscript.

En sak som ofta går fel när man göra installerare är detta med rättigheter, så det gäller att hålla tunga rätt i munnen.

Ursprungligen av marcushedenstrom:

Jag använder inte Package maker, men jag tycker det ser enkelt ut.

Jag gick från 10.4 packagemaker till 10.5 packagemaker och det steget kännde stort eftersom de gjort om hur man ska tänka en hel del.
Svårt är relativt det beror på vad du ska köra.
Vanlig kopiering av material ut i filsystemet är inte svårt det är inte förren du kommer till post/pre-scripten som det börjar bli bökigt.

  • Medlem
  • 2008-08-17 22:15
Ursprungligen av Mattias Hedman:

Jaså det funkar med AppleScript också? Synd att jag inte kan det då.
Men jag klarar mig med schellscript.

get path to home folder

Jag använder inte Package maker, men jag tycker det ser enkelt ut.

Apple script... hmm... nja...

  • Medlem
  • 2008-08-16 15:35

Ingen säger vad det är med applescript som inte är bra?!

Det är för att folk inte förstår sig på AppleScript. De vet inte vad det är bra på, utan (i bästa fall) vad det inte är bra på.

PackageMaker är naturligtvis bra, men som Mattias säger är vissa saker mycket svårare än i din lösning med Bundles. Det är en utmärkt lösning i många fall.

  • Medlem
  • 2008-08-16 22:39

Okej, bra att veta. Det var nån Stockholmskonsult som en gång sa att applescript inte är skitflägeskänsligt, men jag har nog missuppfattat vad han menade...

Ursprungligen av Richard Rönnbäck:

PackageMaker är naturligtvis bra, men som Mattias säger är vissa saker mycket svårare än i din lösning med Bundles. Det är en utmärkt lösning i många fall.

Du tappar bort mig bland syftningarna. Vilket är svårare än vad? Vilket är en utmärkt lösning?

Ursprungligen av Baron:

Jag funderar på att börja bygga installerare i Applescript. finns det några synpunkter på det?
Principen är denna:

set myMe to path to me as string
set myTestfile to alias (myMe & "contents:testmapp:avatar2122_1.gif")
tell application "Finder"
	display dialog "Filen ”avatar2122_1.gif” kommer att läggas på skrivbordet och ersätta den fil med samma namn som eventuellt redan finns där."
	duplicate myTestfile to desktop with replacing
end tell

Jag bifogar en "installerare" som lägger min avatar på skrivbordet.

Det ser ut som en alldeles utmärkt lösning. Det enda som jag just nu kommer på som du däremot bör ändra är att skriva Contents med versalt C. Annars kommer filen inte att hittas om man kör det på ett filsystem som är skiftlägeskänsligt.

AppleScript, språket i sig, är inte skiftslägeskänsligt, (eller som den gode baronen skriver "SKIT-fläges-känsligt" ) men man kan instruera det att vara det (eller inte) på följande sätt:

ignoring case
	if "Ja" = "ja" then
		say "here is what happens when Apple Script is IGNORING case"
		say "Upper case and lower case are treated as being equal"
	else
		--detta händer inte, eftersom texten anses likadan, trots skillnad i versalläge
	end if
end ignoring

delay 1


considering case
	if "Ja" = "ja" then
		---detta händer inte, eftersom texten anses olika, pga skillnad i versalläge
	else
		say "here is what happens when Apple Script is CONSIDERING case"
		say "Upper case and lower case are treated as NOT being equal"
	end if
end considering

MEN även den sortens skiftlägeskänslighet handlar om vad språket i sig tycker när man jämför strängar, för ett skiftlägeskänsligt filsystem är däremot en mapp som heter "Contents" inte samma sak som "contents", så Marcus K har alltså helt rätt, du bör skriva det som det faktiskt heter.

$HOME

Det är inte det som är problemet, installeraren kör som admin alt root, så dess hem är något helt annat än det hem jag verkligen vill till.

  • Medlem
  • 2008-08-18 09:55

Vad vill du då? Min installerare ska placera ut filer och kataloger både i roten och i hemkatalogen.

Nu har jag ett applescript som körs från en filserver och som hämtar filer från samma server och placerar ut lite här och där. Min fundering gäller om det kan vara en idé att baka ihop alltihop till ett programpaket och göra scriptet oberoende av filhanterare.

Men jag har iofs inga direkta vinster att inhämta på det viset, som vår miljö fungerar.

Vad jag vill och vill. Det är så Packagemaker för installeraren.
Den körs som admin, eller det är ett val. Men ska du ner i Program-mappen är det admin som gäller.
Jag kan inte alltid förutsätta att användaren är inloggad när jag kör mina paket - så det är inte säkert att $HOME variabeln finns eller pekar på det stället jag vill.

1
Bevaka tråden