2013-02-01 35 views
10

mam x64 i x86 wersje mojego instalatora msi, a chcesz wysyłać pojedynczy plik wykonywalny, który po prostu sprawdza architekturę maszyny i uruchamia x86/x64 MSI . MSI są w zasadzie identyczne, instalują te same pliki AnyCPU, które pakuję w udostępniony plik .cab, aby nie podwoić rozmiaru instalatora.WiX spalić ładującego x86 i x64 MSI w pojedynczy No-UI inicjującego

Do tej pory wypróbowałem WiX Burn, który wyświetla GUI, którego nie chcę (po prostu chcę użyć GUI MSI), i próbowałem wyłączyć GUI nagrywania za pomocą/silent flag - to propaguje to do MSI, aby wyłączyć wszystkie GUI dla MSI (nie to, czego chcę).

Myślę, że mam rację, kiedy mówię, że nie ma domyślnej wersji No-GUI Burn Burnstrap, a aby ją utworzyć trzeba samemu edytować kod źródłowy? To brzmi jak ogromna brakująca funkcja?

Próbowałem również DotNetInstaller, który ma swój własny zestaw problemów z mylącym interfejsem użytkownika. Próbowałem także setupbld, który nie obsługuje MSI z zewnętrzną kabiną.

Odpowiedz

-3

Możesz użyć akcji niestandardowych i Burn Built-in Variables, aby sprawdzić, czy używasz X86 lub x64. Na tej podstawie można wykonać/uporządkować listę działań.

<InstallExecuteSequence> 
    <Custom Action="Windows32bitInstall" After="InstallFiles">NOT VersionNT64</Custom> 
    <Custom Action ="Windows64bitInstall" After="InstallFiles" >VersionNT64</Custom> 
    <Custom Action="InstallHelp" After="Windows64bitInstall">NOT Installed</Custom> 
</InstallExecuteSequence> 

Wykonałoby się to z tą samą wysokością.

<CustomAction Id="InstallHelp" Directory="ProgramFilesFolder" 
      Execute="deferred" Impersonate="no" Return="ignore" 
      ExeCommand="[HELPDIR]\help.exe /log" /> 
+1

Nie ma żadnych niestandardowych akcji w pakiecie WIX/bootstrapper. To nie jest MSI i nie ma właściwości/funkcjonalności MSI, to exe/aplikacja, która pomaga w łańcuchach! – Isaiah4110

8

Do wykrywania architektury można użyć atrybutu InstallCondition w elemencie MsiPackage.

Aby umieścić go po prostu spróbować:

<MsiPackage SourceFile="..\Example\bin\Release\x86\example.msi" Compressed="no" InstallCondition="NOT VersionNT64" /> 
<MsiPackage SourceFile="..\Example\bin\Release\x64\example.msi" Compressed="no" InstallCondition="VersionNT64" /> 

Źródła: http://wix.sourceforge.net/manual-wix3/wix_xsd_msipackage.htm

1

jak inne odpowiedzi sugerują, można użyć zmiennej VERSIONNT64 aby sprawdzić na jakiej platformie instalujesz.

Program Wix Burn obsługuje tryb bez-GUI lub cichy, przekazując parametr wiersza polecenia "-q".

Wraz z tym obsługuje następujące inne argumenty za:

wixstdba obsługuje tylko "standardowe przełączniki pakietów":

-q, -quiet, -s, -silent = silent install 
-passive = progress bar only install 
-norestart = suppress any restarts 
-forcerestart = restart no matter what (I don't know why this is still around) 
-promptrestart = prompt if a restart is required (default) 
-layout = create a local image of the bootstrapper (i.e. download files so they can be burned to DVD) 
-l, -log = log to a specific file (default is controled by bundle developer) 
-uninstall = uninstall 
-repair = repair (or install if not installed) 
-package,-update = install (default if no -uninstall or -repair) 

Wpisz wixburnexename /? Aby uzyskać szczegółowe informacje na temat urządzenia.