Pour une application qui existe depuis de nombreuses années et qui a stocké les enregistrements Alias classiques dans des fichiers, j'aime recréer des fichiers Alias pointant vers le même fichier maintenant, sans avoir pour résoudre l'alias en premier (car la destination peut être indisponible à ce moment).Générer un fichier Bookmark à partir d'un enregistrement Mac Alias classique
Soi-disant cela devrait arriver:
CFDataRef aliasRecord = ... ; // contains the Alias Record data, see below for an example
CFURLRef url = ... ; // initialized with a file URL
CFDataRef bmData = CFURLCreateBookmarkDataFromAliasRecord (NULL, aliasRecord);
CFError error;
bool ok = CFURLWriteBookmarkDataToFile (bmData, url, 0, &error);
Cependant, la fonction d'écriture échoue, et l'erreur dit: « Le fichier n'a pas pu être sauvé. »
Si je crée à la place des données de signets en utilisant CreateBookmarkData
, l'écriture réussit.
Comment est-ce que je fais ce travail? J'essaierais d'écrire un ancien fichier Alias de style avec les données dans la branche de ressource si ce n'était pas si complètement déconseillé.
Voici un exemple d'enregistrement d'alias que j'aurais dans l'objet aliasRecord - Je peux le résoudre en utilisant la fonction classique Alias Manager FSResolveAlias
, donc je sais que c'est effectivement valide.
00 00 00 00 01 12 00 02 00 01 06 54 54 73 4D 42
50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 CC 31 2F 12 48 2B 00 00 01 A5
F3 9B 03 74 6D 70 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 01 AC 1C 67 D1 FE B7 D0 00 00 00 00 00 00
00 00 FF FF FF FF 00 00 09 20 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 07 70 72 69 76 61 74
65 00 00 10 00 08 00 00 CC 31 12 F2 00 00 00 11
00 08 00 00 D1 FE 9B B0 00 00 00 01 00 04 01 A5
F3 9B 00 02 00 13 54 54 73 4D 42 50 3A 70 72 69
76 61 74 65 3A 00 74 6D 70 00 00 0E 00 08 00 03
00 74 00 6D 00 70 00 0F 00 0E 00 06 00 54 00 54
00 73 00 4D 00 42 00 50 00 12 00 0B 70 72 69 76
61 74 65 2F 74 6D 70 00 00 13 00 01 2F 00 FF FF
00 00