2012-06-28 3 views
13

1 년 전에 Visual Studio 2010에서 WIX 프로젝트를 만들었습니다. MSI 파일과 부트 스트 래퍼 setup.exe를 만듭니다. 사실, 그것은 영어와 프랑스어의 두 언어에 대한 파일 쌍을 만듭니다. 지금은이 프로젝트를 TFS CI 빌드에 통합하고 있습니다. 부트 스트 래퍼 setup.exe 파일을 생성하도록 CI 빌드를 가져 오는 데 문제가 있습니다.지역화 된 WIX 3.6 부트 스트랩 퍼 생성.

우리는 최근 모든 빌드 서버의 Wix를 Wix 3.6 RC로 업그레이드했습니다. 그래서 이전 스타일의 부트 스트 래퍼를 사용하지 않고 번 (Burn)을 시도해 보았습니다. 내 솔루션에 새로운 Bootstrapper 프로젝트를 추가했습니다. 부트 스트 래퍼 프로젝트에는 이전 MSI 프로젝트에서 생성 한 MSI 만로드하는 간단한 bundle.wxs가 포함되어 있습니다. 내가 빌드 할 때 그러나, 나는 다음과 같은 오류가 발생합니다 :

error LGHT0103: The system cannot find the file 'C:\Tf\Advantage\Dev\Solution\Configuration\LaunchPad.Wix\bin\Release\fr-fr\LaunchPad.msi;C:\Tf\Advantage\Dev\Solution\Configuration\LaunchPad.Wix\bin\Release\en-us\LaunchPad.msi'.

번들에서 내 패키지 참조는 다음과 같습니다

<MsiPackage Id="MyApplication" SourceFile="$(var.LaunchPad.Wix.TargetPath)" /> 

LaunchPad.Wix이 윅스 MSI 프로젝트의 이름입니다. LaunchPad.Wix 프로젝트를 변경하여 하나의 언어 만 빌드하면 제대로 작동합니다. 부트 스트 래퍼 프로젝트 유형이 여러 언어의 설치 파일을 빌드하는 것을 지원하지 않는 것처럼 보입니다. 사실입니까? 해결 방법에 대한 제안 사항이 있습니까? 부트 스트 래퍼 프로젝트도 현지화를 지원하는 경우

추가 조사시 편집

, 나는 궁금하다. 나는 fr-fr 만 생성하기 위해 Wix MSI 프로젝트를 설정하려고 시도했다. 내 bootstrapper 프로젝트가 영어로 만든 setup.exe. 부트 스트 래퍼 프로젝트의 프로젝트 속성을 편집 할 때 "빌드 할 문화권"필드가 잠겨 비어 있습니다. 영어가 아닌 부트 스트 래퍼는 어떻게 만들 수 있습니까? 아직 가능합니까?

+0

이 CodePlex 프로젝트에는 부트 스트 래퍼 현지화 샘플 (소스 코드 포함)이 있습니다. https://classicwixburntheme.codeplex.com/ –

답변

20

여러 가지 일이 일어나고 있습니다 : 여러 문화를 사용하는 경우

  1. , 당신은 하나의 파일 이름을 기대 MSBuild를 외부에 뭔가있는 TargetPath를 사용할 수 없습니다. 찾은 것처럼 TargetPath는 빌드 된 지역화 된 파일의 목록입니다. 그러나 .msi 패키지의 출력 언어를 사용할 수있는 경우 TargetPath를 사용할 수 있습니다. <MsiPackage SourceFile="$(var.TestMsi.en-US.TargetPath)" Id="MsiEnUs" />

  2. en-US 및 fr-FR 중 하나 또는 둘 모두를 설치할 수있는 부트 스트 래퍼를 하나 만들고 싶다면 각각을 나열해야합니다 .msi 패키지를 자체 MsiPackage 요소에 별도로 설치해야합니다.

  3. en-US와 fr-FR 각각 두 개의 부트 스트랩퍼를 만들려면 부트 스트 래퍼 .wixproj를 언어마다 한 번씩 두 번 호출해야합니다. 부트 스트 래퍼는 Cultures의 "속임수"를 지원하지 않습니다. MSBuild를 한 번 호출하여 두 개의 출력을 생성하는 것은 문제가됩니다 (TargetPath 문제가 있음).

당신이 WixStandardBootstrapperApplication를 사용하는 경우, 그것은 자동으로 사용자의 UI 언어를 기반으로 UI를 지역화 시도, 다시 시스템 UI 언어로 하락, 그리고 마지막으로 영어로 다시 하락. 그것은 LCID의 이름을 딴 디렉토리에있는 지역화 된 문자열을 찾습니다, 그래서 당신은이 같은 페이로드를 줄 :

<Payload Name="1033\thm.wxl" SourceFile="..." /> 
<Payload Name="1036\thm.wxl" SourceFile="..." /> 

불행하게도, WixStandardBootstrapperApplication 문자열은 EN-US에 대한 현재 사용할 수 있습니다. 이것이 fr-FR 부트 스트 래퍼가 UI를 영어로 표시하는 이유입니다. WiX 소스 파일 HyperlinkTheme.wxl 또는 RtfTheme.wxl (사용하는 테마에 따라 다름)을 현지화해야합니다. 이 두 파일은 모두 src \ ext \ BalExtension \ wixstdba \ Resources에 있습니다.

+0

en-US 및 fr-FR 설치 패키지는 WIX UI 문자열을 제외하고는 동일합니다. 방금 설치 프로그램이 MSI UI를 전혀 표시하지 않는다는 것을 알게되었습니다. 굽기 부트 스트 래퍼에 화상 UI 대신 MSI의 UI를 사용하게하는 방법이 있습니까? 그렇다면 각 MSI (en-US 및 fr-FR)에 대해 하나씩 두 개의 프로젝트를 만들 수 있습니다. 내 다른 옵션과 같은 소리는 단일 부트 스트랩퍼 일 것입니다. 나는 화상에서 UI를 생성 할 것이다 (en-US와 fr-FR 번역 모두). 굽기는 사용자의 OS 언어 설정을 기반으로 올바른 번역을 표시합니다. 그게 옳은 것 같니? –

+0

오른쪽. 부트 스트 래퍼를 현지화하면 하나의 .msi 만 필요합니다. 또는 한 단계 더 나아가 코드를 하나의 .msi로 옮기고 현지화 된 리소스를 언어 당 하나의 .msi로 옮길 수도 있습니다. 단 2 개 언어만으로도 많은 비용을 절약 할 수는 있지만, 12 개 언어를 제공하는 제품을 개발해 보았습니다. 공간을 절약하고 패치를 간소화했습니다. 보통 코드가 아닌 코드를 패치하기 때문입니다. –

+0

en-US/fr-FR/ko-KO/th-TH/ar-SA/el-GR을 설치할 수있는 부트 스트 래퍼를 하나 만들고 현재 시스템 언어를 자동으로 감지 한 다음 UI 문자열을 시스템으로 변환하고 싶습니다. 지체. 그것을 어떻게 성취 할 수 있습니까? 부트 스트 래퍼에는 수동으로 선택해야하는 WixStandardBootstrapperApplication/@ LocalizationFile 속성이 있습니다. 시스템 언어에 따라 자동으로 선택할 수있는 방법은 무엇입니까? –

4

좋은. 그것은 Bob Arnson이 말한 것처럼 작동합니다.

하지만 페이로드의 이름과 SourceFile에주의해야합니다.

<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense"> 
     <Payload Name="2052\thm.wxl" SourceFile="2052\thm.wxl" /> 
</BootstrapperApplicationRef> 

이름을 다른 것으로 변경하면 부트 스트 래퍼는 현지화되지 않습니다.