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
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.
Potrzebujesz bootstrappera; istnieje kilka darmowych dostępnych tam, w tym jeden opracowany w WiX nazwie Burn.
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.
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ź. –
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.
Czy jest to dozwolone zgodnie z warunkami świadczenia usług Apple w zakresie dystrybucji Bonjour? –
@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 –
@SimonMourier tak naprawdę, po przeczytaniu warunków korzystania z usługi wydaje mi się, że to może być legalne, nie? –