2013-05-16 20 views
11

Pracuję z CMake 2.8.10.2 na Mac OS X 10.7.5.Nie można skonfigurować obrazu tła dla instalacji DMG przy użyciu CMake

Skonfigurowałem CMake do zbudowania prostej aplikacji z Xcode, która tworzy puste okno. Następnie próbowałem skonfigurować CMake zbudować instalację DMG programu określającego obraz tła przy użyciu:

zestaw (CPACK_DMG_BACKGROUND_IMAGE/ścieżka/do/obrazu)

i niestandardowe .DS_Store ustawić rozmiar okna i rozmieszczenie ikon przy użyciu :

zestaw (CPACK_DMG_DS_STORE/ścieżka do pliku// DS_Store)

Xcode będzie skutecznie zbudować aplikację i stworzyć obraz dysku. Po zamontowaniu obrazu pojawia się właściwy rozmiar i rozmieszczenie ikon, jednak tło zawsze jest białe zamiast określonego obrazu tła.

Co jest potrzebne, aby uzyskać prawidłowe wyświetlanie tła na obrazie dysku?

Odpowiedz

10

Niestety, nikt nie odpowiedział na to pytanie. To było frustrujące doświadczenie, ale wygląda na to, że w końcu to rozwiązałem, więc publikuję tutaj opis, by uratować komuś smutek, jeśli kiedykolwiek będzie musiał sobie z tym poradzić.

Aby tło działało na obrazie instalacyjnym, zasadniczo muszą się zdarzyć dwie rzeczy; plik tła musi istnieć w obrazie instalacyjnym, a. DS_Store w katalogu głównym obrazu musi być skonfigurowany do używania tego tła.

Plik .DS_Store można skonfigurować, montując obraz instalacyjny w stanie do zapisu, a następnie wybierając opcję Pokaż opcje widoku z menu widoku Findera. Stamtąd ktoś wybierze opcję Obraz dla tła i przeciągnie plik tła do symbolu zastępczego w panelu wyświetlania Pokaż opcje.

Podczas pracy z CPack, sztuczka polega na tym, aby przeciągnąć obraz. Gdy ktoś ustawi tło dla instalacji, zbuduje i zamontuje obraz, nie będzie miał tła, które można przeciągnąć do panelu wyświetlania Pokaż opcje. Jeśli ktoś idzie do terminalu i robi

ls -a 

na korzeń zamontowana instalacja, że ​​komenda pokaże, między innymi, plik o nazwie background.png. Ten plik nie jest wyświetlany w Finderze.

Powodem, dla którego plik ten wyświetla się w terminalu, a nie w Finderze, jest to, że ma rozszerzone atrybuty, które powodują jego ukrywanie w Finderze. Ponieważ plik jest ukryty przed Finderem, nie można przeciągnąć pliku do panelu wyświetlania Pokaż opcje. Wykonanie

ls [email protected] 

ujawni, jakie rozszerzone atrybuty zostaną zastosowane do pliku. Powinien być tylko jeden o nazwie com.apple.FinderInfo. Usunięcie tego atrybutu powinno spowodować, że plik będzie widoczny w Finderze. Atrybut można usunąć za pomocą polecenia z terminala

xattr -d com.apple.FinderInfo background.png 

Po usunięciu atrybut pliku tło nadal nie pojawi się w programie Finder od razu. Ktoś będzie musiał wyrzucić i ponownie zainstalować obraz instalacyjny.Gdy to się stanie, plik tła powinien pojawić się w Finderze i ktoś może go przeciągnąć do panelu wyświetlania , co spowoduje, że obraz tła będzie wyświetlany w oknie Findera dla obrazu instalacyjnego. Następnie ktoś może skopiować plik .DS_Store z katalogu głównego obrazu instalacyjnego i zastosować go do atrybutu CPACK_DMG_DS_STORE, a obraz tła powinien pojawić się za każdym razem, gdy tworzony jest obraz instalacyjny.

+2

Zobacz http://crazyedy.com/tech/?p=535 jak zrobić zapisywalny obraz. –

+1

Najprostszym sposobem na zapisanie obrazu jest użycie 'set (CPACK_DMG_FORMAT" UDRW ")' po raz pierwszy, następnie przełącz się z powrotem na 'UDBZ' – raptor

+2

@LarsBilke Aby zrobić zapisywalny obraz, uruchom go w terminalu: 'hdiutil convert nameoffile.dmg -format UDRW -o nameoffile_writable.dmg' – congusbongus

3

@ TronThomas odpowiedź pomogła mi dramatycznie. Aby nie wypierać jego odpowiedzi, oto kilka dodatkowych informacji o procesie, przez który właśnie przeszedłem. Dla porównania, dotyczy to MacOS Sierra i CMake 3.6.2.

  1. Ustaw obraz tła z set(CPACK_DMG_BACKGROUND_IMAGE /path/to/image)
  2. Utwórz plik DMG przy użyciu generatora CPack DragNDrop
  3. zamontować obraz odczytu/tryb zapisu przy użyciu pliku shadow hdiutil attach mypackage.dmg -shadow junk.dmg
  4. W tym momencie, możemy don” t widać obraz tła, ale plik istnieje w folderze .background w pliku DMG. Nasza strategia będzie polegać na używaniu Findera, aby stworzyć okno, w którym chcemy, a następnie skopiować plik .DS_Store.
  5. W menu Finder kliknij View->Show View Options
  6. Pod Background: kliknij przycisk Picture radiową. Następnie kliknij obraz powyżej tekstu Drag Image Here. Uwaga: bieżący widok musi być as Icons inaczej to okno dialogowe nie będzie tam.
  7. W oknie dialogowym pliku wróć do zamontowanego obrazu DMG. Następnie naciśnij cmd-shift-. Powinno to pokazać ukryte foldery. Stąd przejdź do folderu .background i wybierz obraz tła.
  8. Jeśli wszystko działa poprawnie, obraz tła powinien być teraz widoczny.
  9. Dostosuj rozmiar okna i wyświetl lub ukryj paski narzędzi zgodnie z wymaganiami w menu View. Dokładne ustawienia zostaną zreplikowane przez instalatora.
  10. Skopiuj ukryty plik .DS_Store w katalogu głównym woluminu do innej lokalizacji. Sztuczka cmd-shift-. może być używana do przeglądania pliku lub po prostu skorzystania z Terminalu w tym momencie, aby skopiować wszystko. Zauważ, że możemy zmienić nazwę tego pliku na DS_Store, aby nie była ukrywana, gdy go przechowujemy.
  11. Wysuń plik DMG z Findera. Usuń junk.dmg lub pozostałe pliki cienia.
  12. Powrót w CMakeLists.txt, ustaw zmienną set(CPACK_DMG_DS_STORE /path/to/DS_Store) To jest właśnie utworzony przez nas plik i przeniesiono go z woluminu.
  13. Przebuduj plik DMG za pomocą CPack. Wszystko powinno być wcześniej oglądane.

Jako ostrzeżenie, w pliku .DS_Store zapisanych zostaje wiele informacji, takich jak lokalizacje plików, nazwy użytkowników i tym podobne. W tej chwili nie wiem, jak kontrolować te informacje, więc bądź ostrożny przy dystrybucji ostatecznego pliku DMG. Jeśli jesteś ciekawy, co tam jest, użyj edytora szesnastkowego, takiego jak xxd.

Jako krótki komentarz, proces ten jest bardzo tępy. To powiedziawszy, nie sądzę, że to wina Kitware. Mogli jednak lepiej udokumentować ten proces.Z tego co wiem, format pliku .DS_Store nie jest dobrze udokumentowany lub ujawniony, więc w zasadzie zmuszeni jesteśmy użyć Findera, aby stworzyć dla nas jeden. Jest to problem z systemem MacOS, który prawdopodobnie powinien zostać naprawiony.