2013-05-16 21 views
11

Sto lavorando con CMake 2.8.10.2 su Mac OS X 10.7.5.Impossibile configurare l'immagine di sfondo per l'installazione DMG utilizzando CMake

Ho configurato CMake per creare una semplice applicazione con Xcode che crea una finestra vuota. Allora ho provato a configurare CMake per costruire un impianto di DMG del programma specificando un'immagine di sfondo utilizzando:

set (CPACK_DMG_BACKGROUND_IMAGE/path/to/immagine)

e personalizzato .DS_Store per impostare le dimensioni e il posizionamento finestre icona usando :

set (CPACK_DMG_DS_STORE/path/to/file di DS_Store)

Xcode sarà costruire con successo l'applicazione e creare l'immagine del disco. Quando monto l'immagine viene visualizzata la dimensione e il posizionamento delle icone corrette, tuttavia lo sfondo è sempre impostato su bianco invece dell'immagine di sfondo specificata.

Cosa è necessario per visualizzare correttamente lo sfondo nell'immagine del disco?

risposta

10

Purtroppo nessuno ha risposto a questa domanda. Questa è stata un'esperienza frustrante, tuttavia, sembra che l'ho finalmente risolto quindi sto postando una descrizione qui per salvare qualcun altro il dolore se mai dovessero avere a che fare con questo.

Per fare in modo che uno sfondo funzioni su un'immagine di installazione, in pratica devono accadere due cose; il file di sfondo deve esistere all'interno dell'immagine di installazione e il .DS_Store nella radice dell'immagine deve essere configurato per utilizzare quello sfondo.

Il file .DS_Store può essere configurato montando l'immagine di installazione in uno stato scrivibile e quindi selezionando Mostra opzioni di visualizzazione dal menu Visualizza del Finder. Da lì qualcuno selezionerà l'opzione Immagine per lo sfondo e trascinerà il file di sfondo sul segnaposto nel pannello Mostra opzioni di visualizzazione.

Quando si lavora con CPack, il trucco è riuscire a trascinare l'immagine. Quando qualcuno imposta lo sfondo per l'installazione, crea e monta l'immagine, non sembra che ci sia uno sfondo da trascinare sul pannello Mostra opzioni di visualizzazione. Se qualcuno va nel terminale e fa

ls -a 

sulla radice del montato di installazione, che comando elencherà, tra le altre cose, un file chiamato background.png. Questo file non viene visualizzato nel Finder.

Il motivo per cui questo file viene visualizzato nel Terminale e non nel Finder è perché ha attributi estesi che lo rendono nascosto per il Finder. Poiché il file è nascosto dal Finder, non è possibile trascinare il file sul pannello Mostra opzioni di visualizzazione. Doing

ls [email protected] 

rivelerà quali attributi estesi vengono applicati al file. Ci dovrebbe essere solo uno chiamato com.apple.FinderInfo. La rimozione di questo attributo dovrebbe rendere il file visibile nel Finder. L'attributo può essere rimosso utilizzando questo comando dal Terminale

xattr -d com.apple.FinderInfo background.png 

Dopo aver rimosso l'attributo di file di sfondo ancora non apparirà nel Finder subito. Qualcuno dovrà espellere e rimontare l'immagine di installazione.Una volta che questo è successo, il file di sfondo dovrebbe apparire nel Finder e qualcuno può trascinarlo sul pannello Mostra opzioni di visualizzazione, che farà sì che l'immagine di sfondo venga visualizzata nella finestra del Finder per l'immagine di installazione. Successivamente, qualcuno può copiare il file .DS_Store dalla radice dell'immagine di installazione e applicarlo all'attributo CPACK_DMG_DS_STORE e l'immagine di sfondo dovrebbe apparire ogni volta che viene creata un'immagine di installazione.

+2

Vedere http://crazyedy.com/tech/?p=535 come rendere scrivibile un'immagine. –

+1

Il modo più semplice per rendere scrivibile l'immagine è usare 'set (CPACK_DMG_FORMAT" UDRW ")' per la prima volta, quindi tornare a 'UDBZ' – raptor

+2

@LarsBilke Per rendere un'immagine scrivibile, esegui questo nel terminale: 'hdiutil convert nomeoffile.dmg -format UDRW -o nomeoffile_writable.dmg' – congusbongus

3

@TronThomas risposta mi ha aiutato in modo drammatico. Per non soppiantare la sua risposta, ecco alcune informazioni aggiuntive sul processo che ho appena elaborato. Per riferimento, questo è con MacOS Sierra e CMake 3.6.2.

  1. impostare un'immagine di sfondo con set(CPACK_DMG_BACKGROUND_IMAGE /path/to/image)
  2. Creare il file DMG utilizzando il generatore di CPack DragNDrop
  3. Montare l'immagine in modalità lettura/scrittura utilizzando un file shadow hdiutil attach mypackage.dmg -shadow junk.dmg
  4. A questo punto, noi don' Si vede un'immagine di sfondo, ma ne esiste uno nella cartella .background nel file DMG. La nostra strategia sarà quella di utilizzare Finder per rendere la finestra esattamente come vogliamo, quindi copiare il file fuori .DS_Store.
  5. Nel menu Finder, fare clic View->Show View Options
  6. In Background:, fare clic sul pulsante Picture radio. Quindi, fai clic sull'immagine sopra il testo Drag Image Here. Nota, la vista corrente deve essere as Icons altrimenti questa finestra di dialogo non sarà lì.
  7. Nella finestra di dialogo del file, tornare all'immagine DMG montata. Quindi, premere cmd-shift-. Questo dovrebbe mostrare le cartelle nascoste. Da qui, vai nella cartella .background e seleziona l'immagine di sfondo.
  8. Se tutto ha funzionato correttamente, l'immagine di sfondo dovrebbe ora essere visibile.
  9. Regola le dimensioni di Windows e visualizza o nascondi le barre degli strumenti come desiderato nel menu View. Le impostazioni esatte verranno replicate dal programma di installazione.
  10. Copia il file nascosto .DS_Store nella directory principale del volume in un'altra posizione. Il trucco cmd-shift-. può essere utilizzato per visualizzare il file o semplicemente utilizzare il Terminale a questo punto per copiare tutto. Nota, possiamo cambiare il nome di questo file in DS_Store, in modo che non sia nascosto quando lo memorizziamo.
  11. Espellere il file DMG dal Finder. Elimina junk.dmg o qualsiasi file shadow rimanente.
  12. Back in the CMakeLists.txt, impostare la variabile set(CPACK_DMG_DS_STORE /path/to/DS_Store) Questo è il file che abbiamo appena creato e si è trasferito fuori del volume.
  13. Ricostruire il file DMG con CPack. Tutto dovrebbe essere come visto prima.

Come avviso, ci sono molte informazioni che vengono memorizzate nel file .DS_Store come posizioni di file, nomi utente e simili. Al momento, non so come controllare queste informazioni, quindi fai attenzione quando distribuisci il file DMG finale. Se sei curioso di sapere cosa c'è lì dentro, usa un editor esadecimale come xxd.

Come un breve commento, questo processo è molto ottuso. Detto questo, non penso che sia colpa di Kitware. Tuttavia, potrebbero documentare meglio il processo.Da quello che posso dire, il formato di file .DS_Store non è ben documentato o divulgato, quindi siamo praticamente obbligati a usare Finder per crearne uno per noi. Questo è un problema MacOS che probabilmente dovrebbe essere risolto.