Ripristina associazione di tipi di file


12

Di tanto in tanto lavoro con i pacchetti di iTunes Music Store. Questi pacchetti hanno .itmspun'estensione. Ad esempio .app, .itmspè essenzialmente una directory contenitore. .itmsple cartelle contengono XML e file multimediali.

L'ultimo aggiornamento di Xcode e / o Mac OS X (Xcode 4.6.1 su Mac OS 10.8.3) ha dirottato l'associazione del tipo di file per le directory con l' .itmspestensione. In precedenza erano trattati come normali cartelle - non è richiesto un doppio clic per vedere all'interno. Ora, devo fare doppio clic su di essi per interagire con loro. Quando lo faccio, un programma chiamato Application Loader tenta di aprirli. Per vedere l'interno, devo fare clic con il tasto destro e selezionare "Mostra contenuto pacchetto". Ho a che fare con migliaia di questi file in qualsiasi momento, quindi non funzionerà.

Ho provato a cambiare o rimuovere l'associazione del tipo di file usando Ottieni informazioni e RCDefaultApp. Né funziona. La rimozione dell'associazione del tipo di file trasforma semplicemente le .itmspdirectory in file vuoti. Lo stesso vale per l'eliminazione completa di Application Loader.app. In entrambi i casi non riesco ancora a sfogliare i contenuti senza fare clic con il tasto destro.

La risposta precedentemente accettata ha funzionato a meraviglia per un po ': lsregister -u /Applications/Contents/Applications/Application\ Loader.app/ha smesso di funzionare da quando ho aggiornato Xcode e / o Mac OS X. Se hai Xcode installato, dovresti essere in grado di testarlo nominando una directory foo.itmsp.

Come posso fare in modo che i .itmspfile vengano nuovamente trattati come cartelle?


Hai provato a trascinare e rilasciare un file sull'icona dell'app Xcode e vedere se fa quello che vuoi?
MrDaniel,

Grazie per il suggerimento Non è rilevante per il problema in questione, quindi cercherò di modificare la mia domanda per chiarire il mio intento.
michaelmichael,

1
Quale versione di OS X stai utilizzando? Quale versione di Xcode?
Vecchio professionista il

Ho eliminato la mia risposta che ha rimosso i tipi da CFBundleDocumentTypes e ha interrotto il servizio di avvio DataBase. Funziona per un po ', ma sembra riaffermarsi di nuovo ad un certo punto in seguito. ??
markhunte,

Risposte:


11

Il problema: le cartelle .itmsp sono mostrate come file

Il Finder tratta le cartelle .itmsp come pacchetti , ovvero come se fossero un singolo file. Ad esempio, nella vista colonna, tutto ciò che è contenuto nella cartella .itmsp è invisibile, viene mostrata solo l'icona del documento:

inserisci qui la descrizione dell'immagine

Il Finder considera una directory come un pacchetto se si verifica una delle seguenti condizioni (dalla Guida alla programmazione del pacchetto ):

  1. La directory ha un'estensione di file nota: .app, .bundle, .framework, .plugin, .kext e così via (come definito in /System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plist. Questo è un plist binario, aprilo con Xcode:) open -a Xcode Info.plist.

  2. La directory ha un'estensione che alcune altre rivendicazioni dell'applicazione rappresentano un tipo di pacchetto (cercare com.apple.packagenell'output di mdls -name kMDItemContentTypeTree <foldername>per scoprirlo).

  3. La directory ha il bit del pacchetto impostato (se GetFileInfo -ab <foldername>restituito 1, è impostato).

Il caso 2. si applica alle cartelle .itmsp: Application Loader.appesporta il tipo com.apple.itunes-producer.itmspe lo imposta in conformità a 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>

Una soluzione: ri-dichiarare il tipo com.apple.itunes-producer.itmsp

Una soluzione sarebbe quella di ri-dichiarare il tipo com.apple.itunes-producer.itmspe l'estensione itmspcome una cartella e forzare i Servizi di avvio a utilizzare la dichiarazione di tipo modificata.

Nota importante:

Sebbene risolva in modo affidabile il problema dell'OP, la soluzione proposta, quando applicata ad altri pacchetti, non li visualizza come cartelle.

Ho scoperto che la soluzione proposta sembra funzionare solo con i tipi di file dichiarati dalle applicazioni situate in un percorso dell'applicazione non standard.

Questo è il caso di Application Loader.app, che si trova in /Applications/Xcode.app/Contents/Applications/.

Se sei interessato a una soluzione parziale, controlla la fine di questa risposta.

Per fare in modo che le cartelle .itmsp vengano visualizzate come cartelle dal Finder, procedi come segue:

  1. Apri Automator nella cartella Applicazioni e seleziona Applicazione :

    inserisci qui la descrizione dell'immagine

  2. Seleziona Utilità nell'elenco Libreria, seleziona Esegui script shell e trascinalo nel riquadro a destra:

    inserisci qui la descrizione dell'immagine

  3. Sostituisci il contenuto dello script predefinito con exit 0:

    inserisci qui la descrizione dell'immagine

  4. Salvare l'applicazione come itmspOpener:

    inserisci qui la descrizione dell'immagine

  5. Chiudi Automator.

  6. Seleziona itmspOpener.appe mostra i suoi contenuti:

    inserisci qui la descrizione dell'immagine

  7. Individua Contenuti> Info.plist e aprilo con il tuo editor preferito:

    inserisci qui la descrizione dell'immagine

  8. Sostituisci queste sezioni in 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: perché kUTTypeDirectoryanziché public.directoryin UTExportedTypeDeclarations? Dalla documentazione di Apple : Importante: quando si utilizzano UTI definite dal sistema nel codice, è necessario utilizzare le costanti definite nel UTCoreTypes.hframework Launch Services quando disponibili, anziché le stringhe UTI effettive. Ad esempio, passa kUTTypeApplication anziché "com.apple.application". "Identificatori di tipo uniformi dichiarati dal sistema" elenca queste costanti oltre alle stringhe UTI.

  9. Associare un file .itmsp a itmspOpenere premere il pulsante Change All...:

    inserisci qui la descrizione dell'immagine

  10. Reimposta il database di Launch Services:

    $ lsregister -kill -r -domain local -domain system -domain user
    

    (su OS X 10.8 lsregistersi trova in /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/.)

  11. Crea una cartella .itmsp ed elenca le sue proprietà:

    $ mkdir foo3.itmsp
    $ mdls -name kMDItemContentTypeTree foo3.itmsp/
    kMDItemContentTypeTree = (
        "public.folder",
        "public.directory",
        "public.item"
    )
    

    Poiché il database di Launch Services è stato ripristinato, ora il Finder mostra le cartelle .itmsp come cartelle.

  12. Apri itmspOpener.appper caricare il suo file plist e registrarti com.apple.itunes-producer.itmsp:

    $ open ~/Desktop/itmspOpener.app
    
  13. Inizio Application Loader.app:

    $ open '/Applications/Xcode.app/Contents/Applications/Application Loader.app'
    

    La cartella foo3.itmspdeve comunque essere visualizzata come cartella.

  14. Controlla di nuovo le proprietà della cartella:

    $ mdls -name kMDItemContentTypeTree foo3.itmsp/
    kMDItemContentTypeTree = (
        "public.directory",
        "public.item",
        "public.content"
    )
    

    com.apple.package non è stato aggiunto agli attributi dei metadati della cartella, ecco perché il Finder mostra ancora le cartelle .itmsp come cartelle!

Soluzione automatizzata: visualizzazione delle cartelle .itmsp come cartelle dopo il login

Per visualizzare le cartelle .itmsp come cartelle dopo il login:

  1. Crea itmspOpener.appe modifica il suo Info.plistcome descritto sopra.

  2. Crea /usr/local/bin/itmspTypeLoadercon questo contenuto (la variabile itmspOpenerpunta alla posizione in cui itmspOpener.apprisiede, cambia se necessario):

    #!/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
    

    Sia sleep 15prima che dopo la corsa lsregistersono della massima importanza. Se non vedi il risultato desiderato, prova diversi ritardi.

  3. Crea /usr/local/bin/itmspTypeLoaderLaunchercon questo contenuto:

    #!/bin/bash
    
    # $1 returns the short name of the user who is logging in
    su - $1 -c /usr/local/bin/itmspTypeLoader &
    
  4. Imposta entrambi gli script eseguibili:

    $ sudo chmod a+x /usr/local/bin/itmspTypeLoader /usr/local/bin/itmspTypeLoaderLauncher 
    
  5. Imposta /usr/local/bin/itmspTypeLoaderLaunchercome hook di accesso :

    $ sudo defaults write com.apple.loginwindow LoginHook /usr/local/bin/itmspTypeLoaderLauncher
    
  6. Riavvia per rendere effettive le modifiche. Dopo aver effettuato l'accesso dovresti vedere questo:

    inserisci qui la descrizione dell'immagine

    e lsregister -dumpdovrebbe rivelare che itmspOpener.app's UTExportedTypeDeclarationsha la precedenza su 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
            --------------------------------------------------------
    

    Vedi il inactiveflag impostato nell'esportazione del tipo di Loader.app dell'applicazione? Abbiamo sconfitto il Caricatore applicazioni.

Il test dell'acido: le cartelle .itmsp vengono ancora visualizzate come tali dopo l'aggiornamento di iTunes

Ho recentemente aggiornato Xcode:

inserisci qui la descrizione dell'immagine

e può confermare che le cartelle .itmsp sono state mostrate come cartelle durante l'aggiornamento:

inserisci qui la descrizione dell'immagine

e successivamente:

inserisci qui la descrizione dell'immagine

Una soluzione parziale: il pacchetto mostrerà i contenuti facendo doppio clic

Come precedentemente commentato, la procedura sopra descritta non funziona con cartelle arbitrarie che vengono visualizzate come pacchetti dal Finder.

Tuttavia, se vuoi solo essere in grado di fare doppio clic su un pacchetto per aprirlo, c'è un modo per farlo con uno bashscript e Automator:

  • Lo script crea una cartella nascosta temporanea all'interno del pacchetto, la rivela nel Finder (rivelando così il pacchetto come cartella) e quindi elimina la cartella temporanea.

    Nota:

    Lo script potrebbe invece creare un file temporaneo nascosto. Tuttavia, preferisco creare una cartella perché rmdirelimina solo le cartelle vuote , mentre rmelimina qualsiasi file, quindi se, per qualche motivo. lo script crea scompiglio, verranno eliminate solo le cartelle vuote, il che probabilmente non è così grave come se i file fossero eliminati.

  • Automator raggruppa lo script in un'applicazione che verrà associata ai file del pacchetto.

Questi sono i passaggi per creare una tale applicazione. Userò i file .itmsp come esempio di tipo di pacchetto nella spiegazione seguente:

  1. Apri Automator nella cartella Applicazioni e seleziona Applicazione :

    inserisci qui la descrizione dell'immagine

  2. Seleziona Utilità nell'elenco Libreria, seleziona Esegui script shell e trascinalo nel riquadro a destra:

    inserisci qui la descrizione dell'immagine

  3. Imposta Passa input a come argomenti :

    inserisci qui la descrizione dell'immagine

  4. Sostituisci il contenuto dello script predefinito con questo:

    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
    
  5. Salvare l'applicazione come itmspOpener:

    inserisci qui la descrizione dell'immagine

  6. Chiudi Automator.

Ora hai un'applicazione che può aprire i file .itmsp come cartelle se associati ad essa.

C'è un problema estetico: così com'è, i file associati avranno l'icona standard del documento bianco:

inserisci qui la descrizione dell'immagine

Risolviamo anche questo:

  1. Assicurarsi che Automator sia chiuso.

  2. Seleziona itmspOpener e mostra i suoi contenuti:

    inserisci qui la descrizione dell'immagine

  3. Individua Contenuti> Info.plist e aprilo con il tuo editor preferito:

    inserisci qui la descrizione dell'immagine

  4. Sostituisci il valore per questa chiave CFBundleDocumentTypesnell'array:

    <key>CFBundleTypeName</key>
    <string>itmsp folder</string>
    

    e aggiungi questa chiave:

    <key>CFBundleTypeIconFile</key>
    <string>folder</string>
    

    Ora, la sezione è simile alla seguente:

    inserisci qui la descrizione dell'immagine

  5. Passa al Finder, seleziona una cartella, premi I, seleziona l'icona della cartella nell'angolo in alto a sinistra e copiala con C:

    inserisci qui la descrizione dell'immagine

  6. Apri l'anteprima e seleziona File> Nuovo dagli Appunti. Salva il file come folder.icns:

    inserisci qui la descrizione dell'immagine

  7. Copia folder.icnsin itmspOpener/Contents/Resources:

    inserisci qui la descrizione dell'immagine

  8. Associare un file .itmsp a itmspOpenere premere il pulsante Change All...:

    inserisci qui la descrizione dell'immagine

L'icona dei file .itmsp dovrebbe cambiare in una cartella, o almeno lo pensavo: sfortunatamente, non era così. Quindi ho spostato l'applicazione itmspOpener in un'altra posizione (ho creato una cartella temporanea sul mio desktop, spostata lì e di nuovo sul mio desktop). Che ha aggiornato le informazioni dell'icona nel Finder:

inserisci qui la descrizione dell'immagine

Ora fai doppio clic su un file .itmsp e guardalo aperto come una cartella:

inserisci qui la descrizione dell'immagine


Questo è molto impressionante ... MA sembra avere un problema assurdo: se il Finder è in vista a colonna (il mio tipo di vista preferito), tutto ciò che è contenuto nella .itmspcartella è invisibile. Non riesco a capire perché, ma è così. Inoltre, se avessi i miei druther, non dovresti fare doppio clic sul file per vedere all'interno, ma vabbè.
michaelmichael,

1
Hai ragione. Non avevo previsto che tu usassi la vista a colonne, anche se devo dire che ha perfettamente senso quando si tratta di migliaia di cartelle .itmsp. Ma ho trovato un modo per risolvere il problema, ovvero forzare il Finder a trattare le cartelle .itmsp come cartelle. Dai un'occhiata alla mia modifica (o vai direttamente all'ultimo paragrafo chiamato La soluzione, ma non dimenticare di modificare prima il file Info.plist di itmspOpener come descritto nel paragrafo Il trucco.)
Jaume

Incredibile! Grazie per la risposta. Questo è uno sguardo molto interessante su alcune delle cose che fanno sì che Finder e OS X ticchettino.
michaelmichael,

Grazie, sono felice che l'abbia trovato utile! (Modificherò la risposta in seguito per migliorare la leggibilità e darle più struttura.)
Jaume

Finalmente ho trovato del tempo per modificare la risposta. Ho riordinato i paragrafi e aggiunto prove che la soluzione spiegata nella mia risposta è immune agli aggiornamenti di iTunes.
Jaume,

7

Un'opzione sarebbe quella di annullare la registrazione del Caricatore applicazioni lsregister -u /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/, ma viene nuovamente registrato se viene aperto, se il database di Servizi di avvio viene ricostruito o eventualmente se Xcode viene aggiornato.

È inoltre possibile commentare le voci nei dizionari CFBundleDocumentTypes e UTExportedTypeDeclarations /Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Info.plisted eseguirle lsregister -f /Applications/Xcode.app/Contents/Applications/Utilities/Application\ Loader.app/. Non invalida la firma del codice di Xcode, ma le modifiche potrebbero essere sovrascritte dagli aggiornamenti.

Il percorso completo per lsregister è /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregisterin 10.5 e versioni successive.


Sei sicuro che l'annullamento della registrazione dell'app dopo averlo modificato Info.plistannullerà la registrazione dei tipi di file che hai rimosso dal plist? Posso immaginarlo funzionare e posso facilmente immaginarlo fallire. pure.
Vecchio Pro,

@OldPro Sì, lsregister -u $app && lsregister $appsembra applicare le modifiche a un Info.plist almeno in questo caso.
Lri,

Questa è una risposta favolosa - tieni presente che la prossima volta che esegui l'upgrade di Xcode - potresti finire con un Caricatore applicazioni che registra il valore predefinito in CFBundleDocumentTypesmodo da poter semplicemente eliminare quello "strumento" quando appare se non ti serve e / o stanco di modificarlo.
bmike

2

Ecco un estratto rilevante della documentazione di Apple sui bundle ( enfasi aggiunta )

Come il sistema identifica pacchi e pacchetti

Il Finder considera una directory come un pacchetto se si verifica una delle seguenti condizioni:

  • La directory ha un'estensione di file nota: .app, .bundle, .framework, .plugin, .kext e così via.
  • La directory ha un'estensione che alcune altre rivendicazioni dell'applicazione rappresentano un tipo di pacchetto; vedere " Pacchetti di documenti ".
  • La directory ha il bit del pacchetto impostato.

Il modo preferito per specificare un pacchetto è assegnare alla directory del pacchetto un'estensione di nome file nota. Per la maggior parte, Xcode si occupa di questo per te fornendo modelli che applicano l'estensione corretta. Tutto quello che devi fare è creare un progetto Xcode del tipo appropriato.

Quasi sicuramente Xcode indica che afferma che .itmsprappresenta un tipo di pacchetto, come descritto in Pacchetti di documenti . Quindi forse rimuovere quell'estensione da Xcode Info.plistfarà il trucco, ma sospetto che una volta che l'associazione è stata annotata dal Finder, rimuoverla da Xcode non la annullerà. Quali sono le "applicazioni consigliate" che si ottengono facendo clic con il tasto destro del mouse su "Apri con ..."? Devi controllare tutti i loro Info.plists.

Ti suggerisco di vedere se riesci lsregister -ua cavartela usando per annullare la registrazione di tutte le app che hanno rivendicato .itmsp. Altrimenti potrebbe essere necessario rimuovere .itmspda tutti i piani e quindi uccidere l'intero database delle associazioni del Finder utilizzando lsregister -kill -seed. Non l'ho mai fatto, senza dire quanti danni arrecheranno al resto del sistema. Probabilmente vuoi annullare la registrazione, quindi modificare i piani, quindi uccidere e ridimensionare il database. Non mi sorprenderei se l'annullamento della registrazione non cancella l'associazione se l'hai già rimosso dal plist e il resed lo aggiungerà nuovamente se non l'hai ancora rimosso. Inoltre in questo modo non perderai tutte le altre associazioni per le app offensive.

Quel che è peggio, Xcode avrebbe potuto passare e impostare il bit del bundle su tutte le cartelle. Immagino che dovresti scrivere uno script usando GetFileInfoe SetFilescansionare il disco e annullare quelli, il che è un po 'doloroso, ma fattibile. Le dita incrociate le punte del fascio rimangono non impostate. Utilizzare GetFileInfoper verificare testandone alcuni.


0

Credo che tu possa risolvere questo problema usando

/usr/bin/SetFile -a B /path/to/file.itmsp

Provalo su uno prima di provarlo su tutti gli altri, ovviamente.

Se ne hai bisogno per l'esecuzione su tutti in una determinata cartella:

find . -name \*.itmsp -exec /usr/bin/SetFile -a B {} \;

dovrebbe farlo per te.


1
SetFile -a B imposta il bit del bundle. In realtà, dovrebbe essere disabilitato: SetFile -a b. Ma questo non avrà effetto poiché il Has bundlebit non è impostato: GetFileInfo -ab foo.itmsprestituisce 0.
Jaume
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.