2012-03-30 3 views
3

빌드 환경에 따라 설정 스크립트를 유연하게 만들려면 다음 정의를 사용하고 있습니다.플랫폼 속성을 사용하는 WiX x86/x64 빌드

<?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"속성에서도 Platform을 사용하고 있습니다. 그러나 다시 Win64를 속성을 얻기 위해, 변수 i 이런 식으로 사용

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 특성 사용에 대한 경고를 해결하는 방법이 있습니까?

답변

2

문제를 진단하기위한 추가 정보없이 설치가 완료된 후 앱이 시작되지 않는 이유는 알 수 없지만 잘못된 속성에 대한 경고 메시지가 표시되는 이유를 설명해 드릴 수 있습니다.

경고가 표시되지 않는 명령 줄에서 프로젝트를 컴파일하는 경우 Visual Studio에서 잘못된 특성 경고가 생성됩니다. Visual Studio XML 편집기는 XML 문서의 스키마를 인식하면 자동 XML 스키마 유효성 검사를 수행합니다. Wix XML 스키마는 Win64 속성에 허용되는 값을 yes 또는 no으로 정의합니다. Visual Studio에서는 이러한 값 중 하나가 없으며 정의 된 스키마를 준수하지 않는다는 사실을 알게됩니다. Wix는 먼저 문서를 사전 처리하고 잘못된 값을 포함 파일에 정의한 값으로 바꿉니다. 그러면 문서에서 스키마 유효성 검사를 통과하게됩니다.

요약하면이 경고는 사용자가보고있는 문제의 원인 일 수 없습니다.

관련 문제