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为基础。合成之后的安装包就可以根据系统环境自动切换语言,如果不是关联的语言之一就显示默认语言。
当然,主要的目的是可以让他可以根据用户的选择来显示不同的语言界面。
转载于:https://www.cnblogs.com/lonelyxmas/p/9054574.html
Wix 安装部署教程(十六) -- 自动生成多语言文件相关推荐
- Wix 安装部署教程(十二) -- 自动更新WXS文件
原文:Wix 安装部署教程(十二) -- 自动更新WXS文件 上一篇分享了一个QuickWIX,用来对比两个工程前后的差异,但是这样还是很繁琐,而且昨天发现有Bug,目录对比有问题.这次改变做法,完全 ...
- Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议
Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议 原文:Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议 在上一篇中,留下了许可协议的问题,目前已经解决.感谢网友武全的指点 ...
- Wix 安装部署教程(十三) -- 多语言安装包
原文:Wix 安装部署教程(十三) -- 多语言安装包 这几天摸索WIX的多语言安装包(这里是Wix的setup 工程,不是Bundle),终于走通了,感谢网友uni的指点.WIX的多语言安装包能够根 ...
- 【OpenStack(Train版)安装部署(十六)】之Nova的API测试,报错处理
文章目录 本文章由公号[开发小鸽]发布!欢迎关注!!! 1.nova计算服务的API使用 (1)server服务器状态 (2)查询所有的server实例 (3)查询所有server实例的详细信息 (4 ...
- hugegraph-server和HugeGraph-Hubble超详细安装部署教程(主要idea和linux压缩文件安装)
1. HugeGraph安装与使用 本章主要介绍HugeGraph图数据库HugeGraph-Server的安装与入门使用.本文使用的工作环境为:Windows11.linux(centOs7).id ...
- 五丶阿东安装部署教程+青龙对接阿东及傻妞实现自动登录
阿东安装部署教程+青龙对接阿东及傻妞实现自动登录 没有服务器的先自行购买,这里推荐腾讯云2H4G8M首年70–点击购买 青龙面板安装 傻妞安装教程--+命令 QQ交流:1014549449 ----- ...
- 群晖NAS教程(十六)、利用Docker安装GitLab管理代码工具
为了更好的浏览体验,欢迎光顾勤奋的凯尔森同学个人博客 群晖NAS教程(十六).利用Docker安装GitLab管理代码工具 群晖DSM上安装GitLab有两种方式,一种是直接在群晖套件上安装,另一种是 ...
- Wix 安装部署(二)自定义安装界面和行为
Wix 安装部署(二)自定义安装界面和行为 原文:Wix 安装部署(二)自定义安装界面和行为 上一篇介绍了如何联合MSBuild来自动生成打包文件和对WIX的一些初步认识,http://www.cnb ...
- Wix 安装部署(五) Bootstrapper 捆绑安装
Wix 安装部署(五) Bootstrapper 捆绑安装 原文:Wix 安装部署(五) Bootstrapper 捆绑安装 Wix的xml配置确实很费劲,忍不住有点像吐槽一下,前四篇完成的功能在Wi ...
最新文章
- pytorch VIF(VIT 改)快了两倍
- WebService大讲堂之Axis2(7):将Spring的装配JavaBean发布成WebService
- Java 类型转换
- linux系统调用open、write、close、read以及stat函数详解
- ImportError: No module named ‘pandas.io.data‘
- 延迟加载的一些知识和误区
- python中len和range函数_for循环len函数和range函数的运用
- frame框架左右展开收缩(上下左右,其中左右可收缩)
- python-json下载以及分析-案例
- ADB下载及常用命令
- Rasa课程、Rasa培训、Rasa面试系列之: Rasa客户案例T-Mobile电信公司
- java 电梯调度_OO_JAVA_多线程电梯调度_单元总结
- 微信小程序开发详细步骤是什么?
- 程序员如何提高自己的能力
- VSLAM之边缘化 Marginalization 和 FEJ (First Estimated Jocobian)
- angular中组件changeDetection为ChangeDetectionStrategy.OnPush时的学习
- 浏览器事件之鼠标事件
- 每个人心里都有个非盈利性质的理想
- 前端项目 仿小米商城
- 04 关于热血篮球的一个观点
热门文章
- C语言实现录入学生信息并按分数排序输出
- C++智能指针详解【C++智能指针】
- java中异常处理机制
- linux 无响应_系统加固之Linux安全加固
- vba oracle 01019,Oracle 客户端连接时报ORA-01019错误总结
- 全面容器化之后,来电科技如何实现微服务治理?
- 数字原生,创新生长|企业如何打造数字创新的“飞天梦”?
- 演进实录|不同阶段的企业如何搭建监控体系?
- Delphi XE 使用 MySQL 数据库一个奇怪的问题
- 正则表达式的含义php,求正则表达式含义