windows - WiX x86/x64 build ved hjælp af platform attributten

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg bruger følgende definere for at gøre mit installationsskript fleksibelt i henhold til byggemiljøet.


<?if $(var.Platform)=x64 ?>

<?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
<?define win64Flag = "yes"?>
<?define TargetConfigurationPath = "binx64Release"?>

<?else ?>

<?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
<?define win64Flag = "no"?>
<?define TargetConfigurationPath = "binx86Release"?>
<?endif ?>


I detaljer tænker jeg på den variable Win64Flag, som jeg bruger i alle Win64 Attributter til komponenter. Jeg bruger også platformen i pakken 'Platform' -attributten.
Men for at komme tilbage til Win64-attributten bruger jeg variablen på denne måde:


Win64="$(var.win64Flag)"


Og jeg får altid en advarsel, der fortæller mig, at brug af denne erklæring i en YesNoType-attribut er ugyldig.


Jeg bygger disse ting ved hjælp af candle.exe med dette opkald:


candle.exe -ext WixUtilExtension -dPlatform=x86 "DeploymentWiX Setup ProjectSetupScript.wxs" -out "DeploymentTempBuildOutputSetupScript x86.wixobj"

light.exe -ext WixUIExtension -ext WixUtilExtension "DeploymentTempBuildOutputSetupScript x86.wixobj" -out "DeploymentTempBuildOutputInstaller\_x86.msi"


Jeg har nogle CustomAction i mit script, som automatisk starter en applikation, hvis installationen er færdig. Dette virker fint på x64 builds, men ikke med x86 builds.
Det er derfor, jeg tror, ​​at der måske er noget galt med Win64 Attribut, eller bedre, sådan jeg bruger det.


Men ifølge mine tanker skal noget være korrekt med denne kode, fordi filerne er installeret i den relevante mappe på x64 (Program Files) og x86 (Program Files (x86)). Men jeg spørger mig selv, hvad er grunden til, at mine apps ikke startes efter installationen var færdig.


Jeg arbejder med en x64 Windows, kan det være årsagen til ikke at starte min x86 auto start apps?


Er der mulighed for at løse advarslen om min brug af Win64 Attribut?

Bedste reference


Jeg kan ikke fortælle dig, hvorfor din app ikke starter, efter at installationen er afsluttet uden lidt mere information til at diagnosticere problemet, men jeg kan fortælle dig, hvorfor du får advarslen om den ugyldige attribut.


Den advarsel om ugyldige attributter genereres af Visual Studio, hvis du skulle kompilere dit projekt på kommandolinjen, ville du ikke se se advarslen. Visual Studio XML-editoren gør automatisk XML-skema validering, hvis den genkender skemaet af dit XML-dokument. Wix XML-skemaet definerer de tilladte værdier for Win64 attributten som enten yes eller no. Visual Studio ser, at du ikke har en af ​​disse værdier og venliggør dig at vide, at du ikke overholder det definerede skema. Wix havde på den anden side først forarbejder dokumentet og erstatter den overtrædende værdi med den værdi, du definerede i din inklusiv fil, hvilket gør det, så dokumentet passerer skema validering.


Kort sagt, denne advarsel er sandsynligvis ikke årsagen til det problem, du ser.