O problema: as pastas .itmsp são mostradas como arquivos
O Finder trata as pastas .itmsp como pacotes , ou seja, como se fossem um único arquivo. Por exemplo, no modo de exibição de coluna, qualquer coisa contida na pasta .itmsp é invisível, apenas o ícone do documento é mostrado:

O Finder considera um diretório como um pacote se alguma das seguintes condições for verdadeira (no Guia de programação de pacotes ):
O diretório possui uma extensão de nome de arquivo conhecida: .app, .bundle, .framework, .plugin, .kext e assim por diante (conforme definido em /System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plist. Este é um argumento binário, abra-o com o Xcode:) open -a Xcode Info.plist.
O diretório tem uma extensão que outras reivindicações de aplicativos representam um tipo de pacote (procure com.apple.packagena saída de mdls -name kMDItemContentTypeTree <foldername>para descobrir).
O diretório tem seu bit de pacote definido (se GetFileInfo -ab <foldername>retornar 1, está definido).
O caso 2. se aplica às pastas .itmsp: Application Loader.appexporta o tipo com.apple.itunes-producer.itmspe o configura para com.apple.package:
$ mkdir foo.itmsp
$ mdls -name kMDItemContentTypeTree foo.itmsp/
kMDItemContentTypeTree = (
"com.apple.itunes-producer.itmsp",
"com.apple.package",
(...)
)
$ grep -B 5 -A 8 com.apple.package /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Info.plist
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>com.apple.package</string>
<string>public.composite-content</string>
</array>
<key>UTTypeDescription</key>
<string>iTunes Package</string>
<key>UTTypeIconFile</key>
<string>ITMSP.icns</string>
<key>UTTypeIdentifier</key>
<string>com.apple.itunes-producer.itmsp</string>
Uma solução: declarar novamente o tipo com.apple.itunes-producer.itmsp
Uma solução seria declarar novamente o tipo com.apple.itunes-producer.itmspe a extensão itmspcomo uma pasta e forçar o Launch Services a usar a declaração de tipo modificada.
Nota importante:
Embora resolva o problema do OP de maneira confiável, a solução proposta, quando aplicada a outros pacotes, não os exibe como pastas.
Descobri que a solução proposta parece funcionar apenas com tipos de arquivos declarados por aplicativos localizados em um caminho de aplicativo não padrão.
É o caso de Application Loader.app, localizado em /Applications/Xcode.app/Contents/Applications/.
Se você estiver interessado em uma solução parcial, verifique o final desta resposta.
Para que as pastas .itmsp sejam exibidas como pastas pelo Finder, siga as próximas etapas:
Abra o Automator na pasta Aplicativos e selecione Aplicativo :

Selecione Utilitários na lista Biblioteca, selecione Executar Shell Script e arraste-o para o painel à direita:

Substitua o conteúdo padrão do script por exit 0:

Salve o aplicativo como itmspOpener:

Feche o Automator.
Selecione itmspOpener.appe mostre seu conteúdo:

Localize Conteúdo> Info.plist e abra-o com seu editor favorito:

Substitua estas seções em Info.plist:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>itmsp</string>
</array>
<key>CFBundleTypeName</key>
<string>itmsp folder</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>CFBundleTypeIconFile</key>
<string>folder</string>
<key>LSTypeIsPackage</key>
<false/>
<key>LSHandlerRank</key>
<string>Owner</string>
</dict>
</array>
(...)
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>kUTTypeDirectory</string>
</array>
<key>UTTypeDescription</key>
<string>itmsp folder</string>
<key>UTTypeIconFile</key>
<string>folder.icns</string>
<key>UTTypeIdentifier</key>
<string>com.apple.itunes-producer.itmsp</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<string>itmsp</string>
</dict>
</dict>
</array>
Nota:
Por que kUTTypeDirectory, em vez de public.directorynos UTExportedTypeDeclarations? Na documentação da Apple : Importante: Ao usar UTIs definidas pelo sistema em seu código, você deve usar as constantes definidas UTCoreTypes.hna estrutura do Launch Services quando disponíveis, em vez das cadeias de caracteres reais da UTI. Por exemplo, passe kUTTypeApplication em vez de "com.apple.application". “Identificadores de tipo uniforme declarados pelo sistema” lista essas constantes além das seqüências de caracteres da UTI.
Associe um arquivo .itmsp ae itmspOpenerpressione o botão Change All...:

Redefina o banco de dados do Launch Services:
$ lsregister -kill -r -domain local -domain system -domain user
(no OS X 10.8 lsregisterestá localizado em /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/.)
Crie uma pasta .itmsp e liste suas propriedades:
$ mkdir foo3.itmsp
$ mdls -name kMDItemContentTypeTree foo3.itmsp/
kMDItemContentTypeTree = (
"public.folder",
"public.directory",
"public.item"
)
Como o banco de dados dos Serviços de Inicialização foi redefinido, agora o Finder mostra pastas .itmsp como pastas.
Abra itmspOpener.apppara carregar seu arquivo plist e registre com.apple.itunes-producer.itmsp- se :
$ open ~/Desktop/itmspOpener.app
Início Application Loader.app:
$ open '/Applications/Xcode.app/Contents/Applications/Application Loader.app'
A pasta foo3.itmspainda deve ser exibida como uma pasta.
Verifique as propriedades da pasta novamente:
$ mdls -name kMDItemContentTypeTree foo3.itmsp/
kMDItemContentTypeTree = (
"public.directory",
"public.item",
"public.content"
)
com.apple.package não foi adicionado aos atributos de metadados da pasta, é por isso que o Finder ainda exibe pastas .itmsp como pastas!
Solução automatizada: exibindo pastas .itmsp como pastas após o login
Para exibir pastas .itmsp como pastas após o login:
Crie itmspOpener.appe modifique-o Info.plistconforme descrito acima.
Crie /usr/local/bin/itmspTypeLoadercom este conteúdo (a variável itmspOpeneraponta para o local em que itmspOpener.appreside, altere conforme necessário):
#!/bin/bash
itmspOpener="/Users/jaume/Applications/itmspOpener.app/"
echo "$(date): Starting" > /tmp/itmspTypeLoader.log
sleep 15
echo "$(date): Deleting Launch Services database" >> /tmp/itmspTypeLoader.log
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain system -domain user >> /tmp/itmspTypeLoader.log
sleep 15
echo "$(date): Starting $itmspOpener" >> /tmp/itmspTypeLoader.log
open $itmspOpener >> /tmp/itmspTypeLoader.log
sleep 1
echo "$(date): Starting Application Loader.app" >> /tmp/itmspTypeLoader.log
open "/Applications/Xcode.app/Contents/Applications/Application Loader.app/"
# Wait until process "Application Loader.app" exists
while [ $(ps -ef|grep -v grep|grep -c "Application Loader") -ne 1 ]; do
sleep 1
echo "$(date): Waiting" >> /tmp/itmspTypeLoader.log
done
# Send TERM signal
kill -TERM $(ps -ef|grep "Application Loader"|grep -v grep|awk "{print \$2}")
if [ $? -eq 0 ]; then
echo "$(date): Application Loader killed" >> /tmp/itmspTypeLoader.log
else
echo "$(date): Application Loader could not be killed" >> /tmp/itmspTypeLoader.log
fi
echo "$(date): Exiting" >> /tmp/itmspTypeLoader.log
Ambos sleep 15antes e depois de correr lsregistersão de extrema importância. Se você não encontrar o resultado desejado, tente atrasos diferentes.
Crie /usr/local/bin/itmspTypeLoaderLaunchercom este conteúdo:
#!/bin/bash
# $1 returns the short name of the user who is logging in
su - $1 -c /usr/local/bin/itmspTypeLoader &
Defina os dois scripts executáveis:
$ sudo chmod a+x /usr/local/bin/itmspTypeLoader /usr/local/bin/itmspTypeLoaderLauncher
Defina /usr/local/bin/itmspTypeLoaderLaunchercomo gancho de login :
$ sudo defaults write com.apple.loginwindow LoginHook /usr/local/bin/itmspTypeLoaderLauncher
Reinicie para que as alterações entrem em vigor. Após o login, você deverá ver o seguinte:

e lsregister -dumpdeve revelar que itmspOpener.appé UTExportedTypeDeclarationstem precedência sobre Application Loader.app's:
$ lsregister -dump | less
bundle id: 24748
path: /Users/jaume/Desktop/itmspOpener.app/
name: itmspOpener
(...)
flags: apple-internal relative-icon-path ui-element has-min-sys-version-by-arch hi-res-capable user-can-change-hi-res-mode
item flags: container package application extension-hidden native-app scriptable services x86_64
(...)
--------------------------------------------------------
type id: 33796
uti: com.apple.itunes-producer.itmsp
description: itmsp folder
flags: exported active apple-internal trusted
icon: Contents/Resources/folder.icns
conforms to: kuttypedirectory
tags: .itmsp
--------------------------------------------------------
(...)
bundle id: 24600
path: /Applications/Xcode.app/Contents/Applications/Application Loader.app/
name: Application Loader
(...)
flags: apple-internal relative-icon-path hi-res-capable user-can-change-hi-res-mode
item flags: container package application extension-hidden native-app i386 x86_64
(...)
--------------------------------------------------------
type id: 33832
uti: com.apple.itunes-producer.itmsp
description: iTunes Package
flags: exported inactive apple-internal trusted
icon: Contents/Resources/ITMSP.icns
conforms to: com.apple.package, public.composite-content
tags: .itmsp
--------------------------------------------------------
Você vê o inactivesinalizador definido na exportação de tipo do Application Loader.app? Derrotamos o Application Loader.
As pastas acid test: .itmsp ainda são exibidas como tal após a atualização do iTunes
Atualizei recentemente o Xcode:

e pode confirmar que as pastas .itmsp foram mostradas como pastas durante a atualização:

e depois:

Uma solução parcial: o pacote mostrará o conteúdo ao clicar duas vezes
Como comentado anteriormente, o procedimento detalhado acima não funcionará com pastas arbitrárias que são exibidas como pacotes pelo Finder.
No entanto, se você quiser apenas clicar duas vezes em um pacote para abri-lo, existe uma maneira de fazê-lo com um bashscript e o Automator:
O script cria uma pasta temporária oculta dentro do pacote, a revela no Finder (revelando o pacote como uma pasta) e exclui a pasta temporária.
Nota:
O script poderia criar um arquivo temporário oculto. No entanto, prefiro criar uma pasta porque rmdirapenas exclui pastas vazias , enquanto rmexclui qualquer arquivo, por isso, por algum motivo. o script causa estragos, apenas pastas vazias serão excluídas, o que provavelmente não é tão ruim quanto se os arquivos fossem excluídos.
O Automator agrupa o script em um aplicativo que será associado aos arquivos do pacote.
Estas são as etapas para criar um aplicativo. Usarei arquivos .itmsp como exemplo de tipo de pacote na explicação abaixo:
Abra o Automator na pasta Aplicativos e selecione Aplicativo :

Selecione Utilitários na lista Biblioteca, selecione Executar Shell Script e arraste-o para o painel à direita:

Conjunto de entrada da passagem de como argumentos :

Substitua o conteúdo do script padrão por este:
for f in "$@"; do
# If not dealing with a directory, exit
if [ ! -d "$f" ]; then exit; fi
# Create a temporary directory inside the itmsp "file"
tmpdir="$f/.itmspOpener$$"
if mkdir $tmpdir; then
# Reveal in Finder
open -R $tmpdir
# Delete temporary file
rmdir $tmpdir
fi
done
Salve o aplicativo como itmspOpener:

Feche o Automator.
Agora você tem um aplicativo que pode abrir arquivos .itmsp como pastas, se associado a ele.
Há um problema estético: como está, os arquivos associados terão o ícone padrão de documento branco:

Vamos corrigir isso também:
Verifique se o Automator está fechado.
Selecione itmspOpener e mostre seu conteúdo:

Localize Conteúdo> Info.plist e abra-o com seu editor favorito:

Substitua o valor para esta chave na CFBundleDocumentTypesmatriz:
<key>CFBundleTypeName</key>
<string>itmsp folder</string>
e adicione esta chave:
<key>CFBundleTypeIconFile</key>
<string>folder</string>
Agora, a seção fica assim:

Alterne para o Finder, selecione uma pasta, pressione ⌘I, selecione o ícone da pasta no canto superior esquerdo e copie-o com ⌘C:

Abra Visualizar e selecione Arquivo> Novo na área de transferência. Salve o arquivo como folder.icns:

Copiar folder.icnspara itmspOpener/Contents/Resources:

Associe um arquivo .itmsp ae itmspOpenerpressione o botão Change All...:

O ícone dos arquivos .itmsp deve mudar para uma pasta, ou pelo menos pensei: infelizmente, esse não foi o caso. Então, mudei o aplicativo itmspOpener para outro local (criei uma pasta temporária na minha área de trabalho, mudei para lá e voltei para a minha área de trabalho). Isso atualizou as informações do ícone no Finder:

Agora clique duas vezes em um arquivo .itmsp e observe-o como uma pasta:
