2011-06-20 12 views
7

Zostałem poproszony o dołączenie instalatora Bonjour firmy Apple do naszego instalatora msi, aby Bonjour automatycznie instalował się razem z naszym oprogramowaniem. Ktoś to zrobił wcześniej? To nie wydaje się być trywialne, ponieważ instalator msi nie może włączyć i uruchomić innego. Zakładam, że potrzebuję jakiegoś pliku wsadowego, aby kolejno uruchomić dwa instalatory?Łączenie instalatora Windows Bonjour z systemem Windows w naszym msi

Odpowiedz

1

To byłoby trochę więcej pracy i jest podatne na problemy z aktualizacją, ale można wziąć pakiet MSI Bonjour i dekompilować go przy użyciu ciemności. Konwertuj zdekompilowany plik MSI do modułu scalania, który może być dołączony do instalatora, a będziesz mieć pojedynczą instalację. Zrobiłem to z niektórymi instalacjami sterowników w przeszłości i zazwyczaj nie jest to takie skomplikowane.

+0

Czy jest to dozwolone zgodnie z warunkami świadczenia usług Apple w zakresie dystrybucji Bonjour? –

+0

@Andrey - To nie jest właściwa odpowiedź w rzeczywistości, jak wskazujesz, prawdopodobnie nielegalne. Sprawdź inne odpowiedzi na temat bootstrapper: http://stackoverflow.com/questions/8727057/how-to-add-an-msi-file-to-my-installer, musisz uruchomić z Bonjour.msi ou Bonjour64.msi –

+0

@SimonMourier tak naprawdę, po przeczytaniu warunków korzystania z usługi wydaje mi się, że to może być legalne, nie? –

1

Potrzebujesz bootstrappera; istnieje kilka darmowych dostępnych tam, w tym jeden opracowany w WiX nazwie Burn.

9

Musisz użyć bootstrapera, aby połączyć instalację Bonjour z instalatorem. Jeśli korzystasz z WiX 3.6 lub nowszego, dobrym rozwiązaniem jest użycie pakietu Burn do utworzenia pakietu pakietów.

Znalazłem instalator Bonjour, pobierając pakiet Bonjour SDK i otwierając go w 7-zip, ale jestem pewien, że zainstalowanie SDK również umożliwiłoby dostęp do niego.

Sposób, w jaki zazwyczaj to robię, polega na dodaniu nowego pliku źródłowego do projektu instalacji dla każdego pakietu zależności w celu oddzielenia tej logiki od głównej konfiguracji aplikacji.

Pakiet Bonjour może być wymieniony jako zdalny ładunek do pobrania w locie lub do konfiguracji. W takim przypadku wydaje się, że jest bardziej prawdopodobne, że zostanie ono wbudowane (skompresowane = "tak"). Jeśli chcesz dodać dodatkowe zależności związane z bonjour lub parametrami do przekazania, możesz je również zdefiniować tutaj.

<Fragment> 
    <!-- if a web link actually exists, I didn't find it... --> 
    <?define BonjourWebLink = "http://path/to/Bonjour.msi"?> 

    <PackageGroup Id="BonjourWeb"> 
     <MsiPackage Id="BonjourWeb" 
        Compressed="no" 
        DownloadUrl="$(var.BonjourWebLink)"> 
     </MsiPackage> 
    </PackageGroup> 

    <PackageGroup Id="Bonjour"> 
     <MsiPackage Id="Bonjour" 
        Compressed="yes" 
        SourceFile="path\to\Bonjour.msi"/> 
    </PackageGroup> 
</Fragment> 

W głównym pakiecie wystarczy dodać odniesienie do właściwej grupy pakietów.

<Chain> 
    <PackageGroupRef Id="Bonjour"/> 

    <MsiPackage SourceFile="path\to\YourProduct.msi"/> 
</Chain> 

Od Bonjour używa MSI zamiast pliku wykonywalnego, nie trzeba robić nic, aby wykryć, czy jest on obecny, czy nie; Burn to załatwi za ciebie. W rzeczywistości, ponieważ WiX zbiera większość informacji potrzebnych pakietowi z MSI, może to być przesada i można bezpośrednio umieścić element MsiPackage w swoim łańcuchu bezpośrednio.

Nie zapomnij o dokładnym sprawdzeniu, czy to robisz, Apple's terms.

+0

Ponieważ zauważyłem, ta odpowiedź jest coraz wiele uwagi ostatnio, pomyślałem, że powinienem zaktualizować ją z pewnym więcej informacji. I jeden z linków był martwy. Tak naprawdę tego nie testowałem, ale to jest kierunek, w którym chciałbym wejść. Daj mi znać, jeśli pojawią się problemy i zaktualizuję odpowiedź. –

0

Wix Burn jest obecnie stosunkowo stabilny. Korzystam z Wix 3.8.

Jeśli możesz redystrybuować Bonjour Installer, możesz połączyć instalator w Wix Burn. Możesz nawet ustawić warunek, aby Bonjour był określony jako preinstalacja dla twojego instalatora. Jeśli nie jest obecny, Bonjour zostanie wdrożony, w przeciwnym razie może zostać pominięty.

Możesz sprawdzić ten link w celu zrozumienia Burn.

http://wixtoolset.org/documentation/manual/v3/bundle/

Powiązane problemy