windows - WiX, betinget installation af en fil baseret på OS

Indlæg af Hanne Mølgaard Plasc

Problem



I mit WiX-projekt skal jeg installere andet indhold til det samme filnavn, baseret på OS.



  • Hvis operativsystemet er Windows 7, skal filen have indhold X.

  • Hvis operativsystemet er Windows Vista, skal filen have indhold Y.



Jeg har gennemtalt nogle få tilgange:



  1. Definer to komponenter, et med indholdet til Windows 7 og et andet med indholdet til Vista. Kør en brugerdefineret handling baseret på operativsystemet, der overskriver indholdet til Vista, hvis OS er Windows 7.

  2. Definer to yderligere funktioner (window7 config og win vista config), hvis komponenterne er målrettet mod samme fil og installerer funktionen betinget af OS.



Hvilket er den bedste tilgang til at tage. Eventuelle tips, tricks og sample wix for at få det til at gå?

Bedste reference


En anden løsning ville være at installere begge filer, og få programmet læses fra den korrekte på kørselstidspunktet. Hvis dette er en fil, der senere kan ændres af din ansøgning, vil du sandsynligvis ikke installere den direkte alligevel, men installer snarere en 'standard', der læses, hvis der ikke findes en 'per bruger' fil. I dette tilfælde Når en 'per bruger' -fil ikke findes, skal du læse de relevante OS globale standardindstillinger og derefter skrive dem ud til filen 'per bruger' på første gang (eller når den pågældende fil ikke eksisterer).


Nogle gange er det fornuftigt under det oprindelige applikationsdesign ikke engang at oversætte til et 'godt' Windows Installer resultat, og du skal ændre et par ting :)

Andre referencer 1


Jeg gør en lidt ændret version af # 1. Har to komponenter. En betinget for at installere på Vista. Den anden betinget af at installere på Win7. Derefter har jeg den relevante fil i den relevante komponent. Ingen CustomAction nødvendig. CustomActions bør undgås for enhver pris, se: http://robmensching.com/blog/archive/2007/08/17/Zataoca-Custom-actions-are-generally-an-admission-of-failure.aspx[1]


PS: Marker komponenterne Transitive, så det rigtige indhold bliver installeret på en operativsystemopgradering.