我对自定义操作有问题,该操作引用了本地化的dll(让我们称之为X.dll)。当我构建CA项目时,我可以在bin文件夹中看到几个语言文件夹(de,fr,...),它们应该包含对应于该语言的X.resources.dll。运行安装程序时出现问题。当它提取CA二进制文件时,不存在语言文件夹;相反,我只能看到一个X.resources.dll文件。 我需要所有这些资源dll存在或我的行动将失败。
有没有人知道为什么会发生这种情况以及为什么提取的内容与CA项目的bin文件夹中的内容不同?
设置配置为构建所有文化。
答案 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>