我使用C#创建了托管代码自定义操作处理程序库。我尝试本地化DLL,但Wix.CA.targets执行的默认行为是在非托管代码包装器的包装中不包含语言资源DLL(在其子目录结构中),因此,我无法使用C#定位。
我真的不希望将这些字符串作为属性放在MSI中,并在自定义操作处理程序中读取它们。对于延迟的自定义操作,这看起来很笨重,而且非常笨拙。我更希望直接在自定义操作处理程序DLL中包含本地化。
有人能告诉我如何更改Wix.CA.targets文件以在打包中包含这些语言资源DLL,以便我可以成功本地化吗?或者,它比那更简单 - 例如,我可以设置一些项目属性或注册表项吗?
提前致谢。
答案 0 :(得分:0)
您需要将后期构建事件添加到CA项目中。该事件应该使用本地.NET culture文件夹和.resources文件使C#DTF与MakeSFxCA.exe进行翻译。更多详情 - here和here。我使用的命令示例:“%wix%SDK \ MakeSfxCA.exe”
“$(TargetDir)CustomActionUtilities.CA.dll”“%wix%SDK \ x86 \ sfxca.dll” “$(TARGETDIR)CustomActionUtilities.dll” “$(TARGETDIR)Microsoft.Deployment.WindowsInstaller.dll” “$(TARGETDIR)CustomAction.config” “RU-RU \ CustomActionUtilities.resources.dll = $(TARGETDIR)RU-RU \ CustomActionUtilities.resources.dll” “C:\ Users \ Vitaly-work \ Documents \ Visual Studio 2010 \项目\ ActivationKeys \ CryptoLibrary \ BIN \发布\ CryptoLibrary.dll” “C:\ Users \ Vitaly-work \ Documents \ Visual Studio 2010 \项目\ ActivationKeys \包\ BouncyCastle的-Ext.1.7.0 \ lib中\ net20 \ BouncyCastle.CryptoExt.dll“
请注意,引号对于VS正确处理命令非常重要。