Comment installer une police sur la plate-forme Mac (Snow Leopard) par programme? Quelles étapes dois-je suivre? Je voudrais que l'utilisateur saisisse un fichier de police, puis mon logiciel l'installe.Installation de polices par programme
1
A
Répondre
3
Les polices appartiennent à ~ user/Library/Fonts/pour un seul utilisateur ou/Library/Fonts/pour être accessible à tous les utilisateurs. Vous devez obtenir la permission pour écrire dans/Library/Fonts /, bien qu'il y ait une API pour cela, ce qui le rend relativement facile. (. J'ai le code quelque part et peut regarder vers le haut si personne ne sait Morisque)
Comme demandé, voici quelques API docs:
C'est ancien code Je qui a fait la mise à jour sous Carbon (d'où les chaînes pascal). Il était basé sur un exemple de code qui se trouve probablement quelque part dans l'URL ci-dessus. Je n'ai pas cherché à faire cela sous Cocoa, et c'est une version éditée du code (encore un peu brouillon), donc YMMV.
int main()
{
OSStatus myStatus = -1;
char path[1024];
char myToolPath[2048];
getUpdateAppPath(myToolPath);
getFilePath(path);
if (path[0] != 0)
{
char temp[2048];
FILE *f;
printf("Attempting to open \'%s\'\n", path);
f = fopen(path, "w+");
if (f != 0) // we seem to have write permission
{
fclose(f);
SInt16 res;
sprintf(temp, "\'%s\' \'%s\'", myToolPath, path);
system(temp);
StandardAlert(kAlertNoteAlert, "\pUpdate Complete", "\pSuccessfully updated.", 0, &res);
return 0;
}
AuthorizationFlags myFlags = kAuthorizationFlagDefaults;
AuthorizationRef myAuthorizationRef;
myStatus = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment,
myFlags, &myAuthorizationRef);
if (myStatus != errAuthorizationSuccess)
{
SInt16 res;
StandardAlert(kAlertNoteAlert, "\pAuthorization Error", "\pCould not authorize application to update.", 0, &res);
return myStatus;
}
AuthorizationItem myItems = {kAuthorizationRightExecute, 0, NULL, 0};
AuthorizationRights myRights = {1, &myItems};
myFlags = kAuthorizationFlagDefaults |
kAuthorizationFlagInteractionAllowed |
kAuthorizationFlagPreAuthorize |
kAuthorizationFlagExtendRights;
myStatus = AuthorizationCopyRights (myAuthorizationRef, &myRights, NULL, myFlags, NULL);
if (myStatus != errAuthorizationSuccess)
break;
char *myArguments[] = { path, NULL };
FILE *myCommunicationsPipe = NULL;
char myReadBuffer[128];
myFlags = kAuthorizationFlagDefaults;
myStatus = AuthorizationExecuteWithPrivileges(myAuthorizationRef, myToolPath, myFlags, myArguments,
&myCommunicationsPipe);
if (myStatus == errAuthorizationSuccess)
for(;;)
{
int bytesRead = read (fileno (myCommunicationsPipe),
myReadBuffer, sizeof (myReadBuffer));
if (bytesRead < 1) break;
write (fileno (stdout), myReadBuffer, bytesRead);
}
AuthorizationFree (myAuthorizationRef, kAuthorizationFlagDefaults); // 17
}
if (myStatus)
{
printf("Status: %ld\n", myStatus);
SInt16 res;
StandardAlert(kAlertNoteAlert, "\pUpdater Error", "\pMay not have updated properly.", 0, &res);
}
else {
SInt16 res;
StandardAlert(kAlertNoteAlert, "\pUpdate Complete", "\pSuccessfully updated.", 0, &res);
}
return myStatus;
}
Questions connexes
- 1. Installation du service Windows par programme
- 2. Sane polices par défaut?
- 3. Installation de pilote NDIS intermédiaire (IM) par programme
- 4. Impossible d'utiliser certaines polices par programme dans ASP.Net
- 5. Annulation d'une installation SQL Server Express lancée par programme
- 6. Installation du programme OpenGL/GLUT & running C?
- 7. Installation par programme de la liste de révocation de certificats (CRL)
- 8. Installation d'un programme Python sous Linux
- 9. Installation du programme et de l'architecture de répertoire Windows
- 10. installation _imagingft
- 11. Utilisation du complément «Microsoft Save as PDF» par programme sans installation de Word
- 12. Les polices par défaut en Java
- 13. Réglage des polices par défaut en C#
- 14. Définition des polices par défaut dans NSTextView
- 15. installation automatique de l'apk
- 16. Comment utiliser les polices OpenType dans un programme PostScript?
- 17. Le programme d'installation MSI échoue sans supprimer une installation précédente
- 18. L'installation par programme de la police dans Windows
- 19. Installation de Tkinter
- 20. Authentification par débordement de pile par programme
- 21. Problèmes de polices GhostScript
- 22. Apache Security Installation par défaut Permissions
- 23. Augmenter par programme les privilèges de l'utilisateur
- 24. TWiki ajouter un nouveau sujet par programme
- 25. Polices Ghostscript utilisant l'API
- 26. Installation d'un programme sur Windows Vista version néerlandaise
- 27. Exécution d'un autre programme d'installation dans une installation Inno Setup
- 28. Activation par programme de NSMenuItem
- 29. Contrôle par programme de Firefox
- 30. Définition par programme de clôture
oui s'il vous plaît, api! :) – Avram
Ajouté plus de détails. J'espère que cela t'aides; Cela fait quelques années que je l'ai utilisé, donc les choses ont peut-être changé, mais cela devrait vous aider à avancer dans la bonne direction. –