[英]WiX x86 / x64 build using Platform attribute
我正在使用以下定義來根據構建環境使我的設置腳本變得靈活。
<?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 ?>
詳細介紹我在每個Win64屬性組件中使用的win64Flag變量。 我也在包“Platform”屬性中使用Platform。 但是為了回到Win64屬性,我以這種方式使用變量:
Win64="$(var.win64Flag)"
我總是收到警告,告訴我在YesNoType屬性中使用此語句無效。
我正在用這個調用使用candle.exe構建這個東西:
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"
我的腳本中有一些CustomAction,如果安裝完成,它會自動啟動一個應用程序。 這適用於x64版本,但不適用於x86版本。 這就是為什么我認為Win64屬性可能有問題,或者更好,我使用它的方式。
但根據我的想法,這段代碼必須正確,因為文件安裝在x64(Program Files)和x86(Program Files(x86))上的相應文件夾中。 但我問自己,我的應用程序在安裝完成后沒有啟動的原因是什么。
我正在使用x64 Windows,這可能是導致我無法啟動x86自動啟動應用程序的原因嗎?
有沒有辦法解決我使用Win64屬性的警告?
我無法告訴您為什么您的應用程序在安裝完成后沒有啟動而沒有更多信息來診斷問題,但我可以告訴您為什么您收到有關無效屬性的警告。
無效屬性警告由Visual Studio生成,如果您要在命令行上編譯項目,則看不到警告。 如果Visual Studio XML編輯器識別XML文檔的架構,它將執行自動XML架構驗證。 Wix XML模式將Win64
屬性允許的值定義為yes
或no
。 Visual Studio發現您沒有其中一個值,並且讓您知道您沒有遵守定義的架構。 Wix,另一方面,首先對文檔進行預處理,並使用您在包含文件中定義的值替換違規值,這樣文檔就會通過模式驗證。
簡而言之,此警告可能不是您所看到的問題的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.