2009-10-19 4 views
0

J'ai créé un package d'installation OS X qui inclut des ressources localisées (License.html, Readme.html, etc.) En particulier, il inclut un script postflight localisé, car certaines des actions post-installation diffèrent d'une langue à l'autre ; ouvrir un fichier par langue une fois l'installation terminée, par exemple. Le package est créé dans le cadre d'une génération automatisée, et non via Package Maker. À l'origine, j'ai utilisé le nom de l'environnement local «complet» comme nom de dossier de ressources localisé; par exemple, English.lproj. Tout a bien fonctionné. Récemment, je suis passé au nom ISO, c'est-à-dire en.lproj, puisque j'ai découvert que c'était ce que Package Maker utilisait, et this question indique que la forme est préférée. Tout a fonctionné exactement de la même manière, sauf que le script Postflight n'est plus exécuté.La localisation postflight du package d'installation OS X est-elle prise en charge?

J'ai fait quelques tests plus, et a remarqué que, même quand il fonctionne (en utilisant le nom complet de la langue comme le nom du dossier), il enregistre ce message à la console:

Localized installer script postflight found in the <name> package. Using compatibility mode.

I peut trouver à peine la mention de la localisation de l'installateur dans les documents de développement d'Apple, et encore moins de tout ce qui concerne les scripts. Est-ce que quelqu'un a de l'expérience avec ça? Est-ce un bug pour ne pas travailler avec en.lproj, ou était-ce un bug pour que ça marche?

Répondre

0

Il s'avère que non, cela n'est plus supporté.

0

choses que je ne comprends pas:

  1. Si vous n'êtes pas la création de ces paquets avec PackageMaker, ce qui les créez vous? Pourquoi un script postflight devrait-il jamais être localisé lorsque la logique conditionnelle suffirait presque sûrement?

+0

Ils sont créés par un script; le format du paquet d'installation n'est pas très compliqué. Je pourrais avoir le script basculer sur la sortie de 'locale', mais cela ajoute une plus grande complexité au script, et rend la localisation difficile. Il est beaucoup plus facile de créer des copies traduites séparées de quelque chose que d'insérer plusieurs traductions dans un seul fichier. Le fait que l'installateur fasse la commutation, comme cela semble être le cas lors de l'utilisation de noms de dossiers complets, rend ma vie beaucoup plus facile. Je veux juste savoir si c'est une option. – DNS

+0

PackageMaker fournit un outil de ligne de commande pouvant être exécuté à partir de n'importe quel script de génération. Si vous ne l'utilisez pas, vous acceptez la responsabilité de garder à jour ce que vous avez écrit. Ce qui est vraiment plus simple, c'est de regarder toutes les variables d'environnement qui ont été définies pour votre script et d'ajuster son comportement en conséquence lors de l'exécution. Maintenir un script complètement séparé pour chaque langue que vous prenez en charge est une perte de temps et de bande passante. –

+0

Le script postflight est exécuté avec les privilèges root, donc à moins que quelqu'un ne configure les préférences de langue pour l'utilisateur root (ce qui n'est pas fait par défaut), vous ne pouvez pas obtenir cette information à partir des variables d'environnement. – MatsT

Questions connexes