2012-03-30 6 views
3

Ich verwende folgende definieren, um meine Setup-Skript entsprechend der Build-Umgebung flexibel zu machen.WiX x86/x64 Build mit Platform-Attribut

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

<?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?> 
<?define win64Flag = "yes"?> 
<?define TargetConfigurationPath = "bin\x64\Release"?> 

<?else ?> 

<?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?> 
<?define win64Flag = "no"?> 
<?define TargetConfigurationPath = "bin\x86\Release"?> 
<?endif ?> 

im Detail Ich kümmere mich um die Variable win64Flag, die ich in jedem Win64-Attribut von Komponenten verwende. Ich verwende die Plattform auch im Attribut "Plattform" der Pakete. Aber zurück zu dem Win64-Attribute, verwende ich die Variable auf diese Weise:

Win64="$(var.win64Flag)" 

Und ich bekomme immer eine Warnung mir zu sagen, dass diese Aussage in einem YesNoType Attribute ungültig ist.

Ich baue dieses Zeug candle.exe mit diesem Aufruf mit:

candle.exe -ext WixUtilExtension -dPlatform=x86 "Deployment\WiX Setup Project\SetupScript.wxs" -out "Deployment\TempBuildOutput\SetupScript x86.wixobj" 

light.exe -ext WixUIExtension -ext WixUtilExtension "Deployment\TempBuildOutput\SetupScript x86.wixobj" -out "Deployment\TempBuildOutput\Installer_x86.msi" 

Ich habe einige Custom in meinem Skript, das auto-eine Anwendung startet, wenn die Installation abgeschlossen. Dies funktioniert bei x64-Builds, aber nicht bei x86-Builds. Das ist der Grund, warum ich denke, dass etwas mit dem Win64-Attribut oder besser mit der Art, wie ich es verwende, nicht stimmt.

Aber nach meinen Gedanken muss etwas mit diesem Code stimmen, weil die Dateien in den entsprechenden Ordner auf x64 (Programme) und x86 (Programme (x86)) installiert sind. Aber ich frage mich, was der Grund ist, warum meine Apps nach der Installation nicht gestartet wurden.

Ich arbeite mit einem x64 Windows, kann dies der Grund sein, meine x86 Autostart-Apps nicht zu starten?

Gibt es eine Möglichkeit, die Warnung über meine Verwendung des Win64-Attributs zu lösen?

Antwort

2

Ich kann Ihnen nicht sagen, warum Ihre App nicht startet, nachdem die Installation abgeschlossen ist, ohne ein wenig mehr Informationen zur Diagnose des Problems, aber ich kann Ihnen sagen, warum Sie die Warnung über das ungültige Attribut erhalten.

Die ungültige Attributwarnung wird von Visual Studio generiert, wenn Sie Ihr Projekt in der Befehlszeile kompilieren sollten, die Sie nicht sehen würden, sehen Sie die Warnung. Der Visual Studio-XML-Editor führt eine automatische XML-Schemaüberprüfung durch, wenn er das Schema Ihres XML-Dokuments erkennt. Das Wix-XML-Schema definiert die für das Attribut Win64 zulässigen Werte entweder als yes oder no. Visual Studio erkennt, dass Sie keinen dieser Werte haben und weist Sie freundlich darauf hin, dass Sie das festgelegte Schema nicht einhalten. Wix hat auf der anderen Seite zuerst das Dokument vorverarbeitet und den fehlerhaften Wert durch den Wert ersetzt, den Sie in Ihrer Include-Datei definiert haben, wodurch das Dokument die Schema-Validierung besteht.

Kurz gesagt, diese Warnung ist wahrscheinlich nicht die Ursache des Problems, das Sie sehen.