WIx CustomAction缺少本地化文件夹

时间:2016-09-01 13:41:49

标签: dll localization wix custom-action

我对自定义操作有问题,该操作引用了本地化的dll(让我们称之为X.dll)。当我构建CA项目时,我可以在bin文件夹中看到几个语言文件夹(de,fr,...),它们应该包含对应于该语言的X.resources.dll。运行安装程序时出现问题。当它提取CA二进制文件时,不存在语言文件夹;相反,我只能看到一个X.resources.dll文件。 我需要所有这些资源dll存在或我的行动将失败。

有没有人知道为什么会发生这种情况以及为什么提取的内容与CA项目的bin文件夹中的内容不同?

设置配置为构建所有文化。

2 个答案:

答案 0 :(得分:0)

有一种方法可以将更多文件包含在makefxCA.exe的cmd行中。我认为你需要定义$(CustomActionContents)msbuild属性,这是一个包含文件的路径列表。

您可以在wix.ca.targets文件中看到自定义操作项目结束时运行的msbuild目标。

我不知道这是否会尝试将所有包含的文件放在根路径中,这样可能会导致重复的名称dll出现问题。或者你可以弄清楚如何为所有支持的语言创建一个本地化DLL,但这可能很难(虽然我确信它一定是可能的)。

答案 1 :(得分:0)

正如Brian Sutherland所写,要使最终的CA dll包含其他文件,可以将它们添加到componentDidMount() { let general = {}; let values = []; //gets selected setting form schema getSettingsForms().then((response) => { this.setState({settingsForms: response}); general = response[this.state.selectedSetting]; }).then(response => { values = getSettingsConfig(this.state.selectedSetting, general); values.then(result => { this.setState({ formSchema: result[1], selectedSetting: this.state.selectedSetting, settings: result[0] }) }) }) } 定义的以分号分隔的字符串中。

用于打包CA dll的生成操作称为$(CustomActionContents)。在执行该构建操作之前,需要将其他文件添加到属性中。

this blog post中所述,要为解压缩的CA dll创建目标文件夹结构,您需要使用以下语法添加文件:

PackCustomAction

在自定义操作项目文件中使用单独的构建目标的解决方案示例,该目标将在PackCustomAction之前执行,并将ru \ resources.dll文件添加到CA dll。

<TargetDir>\<TargetFileName>=<SourceDir>\<SourceFileName>