我创建了Visual Studio 2010的一个WIX项目在一年前。 它创建了一个MSI文件和引导程序的setup.exe。 事实上,它创建的文件对两种语言 - 英语和法语。 我刚才整合这个项目到我们的TFS CI构建。 我遇到麻烦CI构建产生引导程序的setup.exe文件。
我们最近升级我们的构建服务器上维克斯到WiX的3.6 RC。 所以,我想我给烧一试,而不是使用引导程序的旧风格。 我添加了一个新的引导程序的项目,以我的解决方案。 引导程序的项目包括刚刚通过加载我的老MSI项目所产生的MSI简单bundle.wxs。 但是,当我尝试建立我得到以下错误:
错误LGHT0103:系统无法找到文件“C:\ TF \优势\开发\解决方案\配置\ LaunchPad.Wix \ BIN \发布\ FR-FR \ LaunchPad.msi; C:\ TF \优势\开发\解决方案\配置\ LaunchPad.Wix \ BIN \发布\ EN-US \ LaunchPad.msi”。
在包我的包参考如下:
<MsiPackage Id="MyApplication" SourceFile="$(var.LaunchPad.Wix.TargetPath)" />
LaunchPad.Wix是维克斯MSI项目的名称。 如果我改变LaunchPad.Wix项目,以建立只有一种语言,然后它工作正常。 在我看来像引导程序项目类型只是不支持建筑安装文件多种语言。 这是真的? 一个解决方法有什么建议?
编辑
经进一步调查,我不知道如果引导程序的项目甚至支持本地化。 我尝试设置我的维克斯MSI项目,以创建唯一的FR-FR。 我的引导程序的项目与英国创建的setup.exe。 当我编辑的引导程序项目“文化建设”项目属性字段被锁定和空白。 我将如何建立一个非英文的引导程序? 这是可能的吗?
有几件事情会在这里:
如果使用多种文化,你不能在外面的MSBuild的东西,需要一个单一的文件名中使用TARGETPATH。 当你发现,TARGETPATH是建本地化的文件列表。 但是,你可以使用TARGETPATH如果你有资格的.msi包的输出语言: <MsiPackage SourceFile="$(var.TestMsi.en-US.TargetPath)" Id="MsiEnUs" />
如果你想创建一个引导程序是可以安装/两的en-US和FR-FR,你需要在自己的MsiPackage元素分别列出每个.msi包。
如果你想创建两个bootstrappers,一个EN-US和一个FR-FR,则需要调用引导程序.wixproj两次,一次为每种语言。 Bootstrappers不支持文化“绝招” - 这是有问题的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。 你需要本地化HyperlinkTheme.wxl或RtfTheme.wxl(取决于您使用的主题)的WiX的源文件。 这两个文件都放在src \分机\ BalExtension \ wixstdba \资源。
好。 它的工作原理是鲍勃Arnson说。
但必须注意的名称和有效载荷的SourceFile。
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense">
<Payload Name="2052\thm.wxl" SourceFile="2052\thm.wxl" />
</BootstrapperApplicationRef>
如果你将名称更改为另一个。 引导程序将不进行本地化。
文章来源: Creating localized WIX 3.6 bootstrappers.