Wix 安装部署教程(十六) -- 自动生成多语言文件
原文:Wix 安装部署教程(十六) -- 自动生成多语言文件

因为持续集成需要,所有项目编译完之后生成一个多语言的安装包。之前生成mst文件都是手动操作,而且mst文件必须每次重新和新的安装包“关联”,否则中文的安装包去调用英文的资源的时候就会报类似于“类型转换失败”的错误。基于这两点,有必要程序化这个流程,不然每次打包都得找我了。以下是程序的记录。比较简单。

其实就是用程序调用cmd,再次之前,请记得将wix的bin目录加入到系统变量中。否则命令不会被识别;然后将程序执行目录指向目标目录。

 static void Main(string[] args){if (args.Length < 1){return;}Console.WriteLine(args[0]);var path = args[0];//  var path =MsiPath;
            Console.WriteLine("正在执行:" + DateTime.Now);var p = new Process{StartInfo ={FileName = "cmd.exe ",UseShellExecute = false,RedirectStandardInput = true,RedirectStandardOutput = true,RedirectStandardError = true,CreateNoWindow = false,WorkingDirectory = path}};try{p.Start();if (!Init(p, path)){Console.WriteLine("初始化失败");p.Close();return;}//合并语言
                ExcComand(p, CommandLines.LanZh_TW);ExcComand(p, CommandLines.LanZh_CN);ExcComand(p, CommandLines.LanEN_US);//关联语言
                ExcComand(p, CommandLines.CombanLanZh_cn);//测试安装包// ExcComand(p, CommandLines.Testzh_Tw);//p.WaitForExit();
                p.Close();Console.WriteLine("Complete" + DateTime.Now);}catch (Exception e1){Console.WriteLine("error" + e1.Message);}}

先初始化,确保安装文件、vbs文件和mst文件都存在。

  private static string[] lans = { "zh-cn", "en-us", "zh-tw" };private static bool Init(Process p, string path){//多语言安装包是否存在 foreach (var lan in lans){var lanPath = Path.Combine(path, lan, SoftName);if (!File.Exists(lanPath)){Console.WriteLine("{0}安装包不存在!",lan);return false;}}//保证两个文件CopyFileIfNotExist(path,"WixSubStg.vbs");CopyFileIfNotExist(path, "WiLangId.vbs");//变形文件是否存在var twmst = Path.Combine(path, "transforms", "zh-tw.mst");if (!File.Exists(twmst)){GetTransforms(p);}//再检测一次return File.Exists(twmst);}

这两个vbs文件,在教程十三里面有提供。 最后在检查一次mst文件就是确保mst文件的存在。变形文件是我们多语言安装包的关键。

  /// <summary>/// 生成变形文件/// </summary>/// <param name="p"></param>private static void GetTransforms(Process p){ExcComand(p, CommandLines.EnToZh);ExcComand(p, CommandLines.EnToTw);ExcComand(p, CommandLines.ZhToEn);}private static void ExcComand(Process p, string command){p.StandardInput.WriteLine(command);Console.WriteLine("command:" + command);Thread.Sleep(1500);}

View Code

而commandLines 这个类里面就包含了这次所会用到的命令。

public  class CommandLines{//对应繁体public static string LanZh_TW = @"WixSubStg.vbs zh-cn\DIAViewSetup.msi  transforms\zh-tw.mst 1028";//对应中文public static string LanZh_CN = @"WixSubStg.vbs zh-cn\DIAViewSetup.msi transforms\zh-cn.mst 2052";//对应英文public static string LanEN_US = @"WixSubStg.vbs zh-cn\DIAViewSetup.msi transforms\en-us.mst 1033";//合成语言安装包 ,默认是中文public static string CombanLanZh_cn = @"WiLangId.vbs zh-cn\DIAViewSetup.msi Package 1028,2052,1033";//测试繁体安装包public static string Testzh_Tw = @"msiexec /i  zh-cn\DIAViewSetup.msi TRANSFORMS=transforms\zh-tw.mst";//测试中文安装包public static string Testzh_Cn = @"msiexec /i  zh-cn\DIAViewSetup.msi TRANSFORMS=transforms\zh-cn.mst";//测试英文安装包public static string Testen_US = @"msiexec /i  zh-cn\DIAViewSetup.msi TRANSFORMS=transforms\en-us.mst";//生成英文资源public static string EnToZh = @"torch.exe -t language en-us\DIAViewSetup.msi zh-cn\DIAViewSetup.msi -out transforms\zh-cn.mst";//生成中文资源public static string EnToTw = @"torch.exe -t language en-us\DIAViewSetup.msi zh-tw\DIAViewSetup.msi -out transforms\zh-tw.mst";//生成繁体资源public static string ZhToEn = @"torch.exe -t language zh-cn\DIAViewSetup.msi en-us\DIAViewSetup.msi -out transforms\en-us.mst";}

View Code

最后的执行结果如下。 这里是以zh-cn为基础。合成之后的安装包就可以根据系统环境自动切换语言,如果不是关联的语言之一就显示默认语言。

当然,主要的目的是可以让他可以根据用户的选择来显示不同的语言界面。

posted on 2018-05-18 09:22 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/9054574.html

Wix 安装部署教程(十六) -- 自动生成多语言文件相关推荐

  1. Wix 安装部署教程(十二) -- 自动更新WXS文件

    原文:Wix 安装部署教程(十二) -- 自动更新WXS文件 上一篇分享了一个QuickWIX,用来对比两个工程前后的差异,但是这样还是很繁琐,而且昨天发现有Bug,目录对比有问题.这次改变做法,完全 ...

  2. Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议

    Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议 原文:Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议 在上一篇中,留下了许可协议的问题,目前已经解决.感谢网友武全的指点 ...

  3. Wix 安装部署教程(十三) -- 多语言安装包

    原文:Wix 安装部署教程(十三) -- 多语言安装包 这几天摸索WIX的多语言安装包(这里是Wix的setup 工程,不是Bundle),终于走通了,感谢网友uni的指点.WIX的多语言安装包能够根 ...

  4. 【OpenStack(Train版)安装部署(十六)】之Nova的API测试,报错处理

    文章目录 本文章由公号[开发小鸽]发布!欢迎关注!!! 1.nova计算服务的API使用 (1)server服务器状态 (2)查询所有的server实例 (3)查询所有server实例的详细信息 (4 ...

  5. hugegraph-server和HugeGraph-Hubble超详细安装部署教程(主要idea和linux压缩文件安装)

    1. HugeGraph安装与使用 本章主要介绍HugeGraph图数据库HugeGraph-Server的安装与入门使用.本文使用的工作环境为:Windows11.linux(centOs7).id ...

  6. 五丶阿东安装部署教程+青龙对接阿东及傻妞实现自动登录

    阿东安装部署教程+青龙对接阿东及傻妞实现自动登录 没有服务器的先自行购买,这里推荐腾讯云2H4G8M首年70–点击购买 青龙面板安装 傻妞安装教程--+命令 QQ交流:1014549449 ----- ...

  7. 群晖NAS教程(十六)、利用Docker安装GitLab管理代码工具

    为了更好的浏览体验,欢迎光顾勤奋的凯尔森同学个人博客 群晖NAS教程(十六).利用Docker安装GitLab管理代码工具 群晖DSM上安装GitLab有两种方式,一种是直接在群晖套件上安装,另一种是 ...

  8. Wix 安装部署(二)自定义安装界面和行为

    Wix 安装部署(二)自定义安装界面和行为 原文:Wix 安装部署(二)自定义安装界面和行为 上一篇介绍了如何联合MSBuild来自动生成打包文件和对WIX的一些初步认识,http://www.cnb ...

  9. Wix 安装部署(五) Bootstrapper 捆绑安装

    Wix 安装部署(五) Bootstrapper 捆绑安装 原文:Wix 安装部署(五) Bootstrapper 捆绑安装 Wix的xml配置确实很费劲,忍不住有点像吐槽一下,前四篇完成的功能在Wi ...

最新文章

  1. pytorch VIF(VIT 改)快了两倍
  2. WebService大讲堂之Axis2(7):将Spring的装配JavaBean发布成WebService
  3. Java 类型转换
  4. linux系统调用open、write、close、read以及stat函数详解
  5. ImportError: No module named ‘pandas.io.data‘
  6. 延迟加载的一些知识和误区
  7. python中len和range函数_for循环len函数和range函数的运用
  8. frame框架左右展开收缩(上下左右,其中左右可收缩)
  9. python-json下载以及分析-案例
  10. ADB下载及常用命令
  11. Rasa课程、Rasa培训、Rasa面试系列之: Rasa客户案例T-Mobile电信公司
  12. java 电梯调度_OO_JAVA_多线程电梯调度_单元总结
  13. 微信小程序开发详细步骤是什么?
  14. 程序员如何提高自己的能力
  15. VSLAM之边缘化 Marginalization 和 FEJ (First Estimated Jocobian)
  16. angular中组件changeDetection为ChangeDetectionStrategy.OnPush时的学习
  17. 浏览器事件之鼠标事件
  18. 每个人心里都有个非盈利性质的理想
  19. 前端项目 仿小米商城
  20. 04 关于热血篮球的一个观点

热门文章

  1. C语言实现录入学生信息并按分数排序输出
  2. C++智能指针详解【C++智能指针】
  3. java中异常处理机制
  4. linux 无响应_系统加固之Linux安全加固
  5. vba oracle 01019,Oracle 客户端连接时报ORA-01019错误总结
  6. 全面容器化之后,来电科技如何实现微服务治理?
  7. 数字原生,创新生长|企业如何打造数字创新的“飞天梦”?
  8. 演进实录|不同阶段的企业如何搭建监控体系?
  9. Delphi XE 使用 MySQL 数据库一个奇怪的问题
  10. 正则表达式的含义php,求正则表达式含义