Wix 安装部署教程(十六) -- 自动生成多语言文件
因为持续集成需要,所有项目编译完之后生成一个多语言的安装包。之前生成mst文件都是手动操作,而且mst文件必须每次重新和新的安装包“关联”,否则中文的安装包去调用英文的资源的时候就会报类似于“类型转换失败”的错误。基于这两点,有必要程序化这个流程,不然每次打包都得找我了。以下是程序的记录。比较简单。
其实就是用程序调用cmd,再次之前,请记得将wix的bin目录加入到系统变量中。否则命令不会被识别;然后将程序执行目录指向目标目录。
static void Main(string[] args)
{
if (args.Length < )
{
return;
}
Console.WriteLine(args[]); var path = args[];
// 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();
}
而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";
}
最后的执行结果如下。 这里是以zh-cn为基础。合成之后的安装包就可以根据系统环境自动切换语言,如果不是关联的语言之一就显示默认语言。
当然,主要的目的是可以让他可以根据用户的选择来显示不同的语言界面。
Wix 安装部署教程(十六) -- 自动生成多语言文件的更多相关文章
- Wix 安装部署教程(十二) -- 自动更新WXS文件
上一篇分享了一个QuickWIX,用来对比两个工程前后的差异,但是这样还是很繁琐,而且昨天发现有Bug,目录对比有问题.这次改变做法,完全让程序自动去更新WXS文件,然后再用CCNet去自动编译,这样 ...
- Wix 安装部署教程(十五) --CustomAction的七种用法
在WIX中,CustomAction用来在安装过程中执行自定义行为.比如注册.修改文件.触发其他可执行文件等.这一节主要是介绍一下CustomAction的7种用法. 在此之前要了解InstallEx ...
- Wix 安装部署教程(十) --来,用WPF做个漂亮的安装界面
在上一篇中曾留下两个问题,.Net捆绑安装不触发以及路径选择的问题现在都已经解决,这段时间花的最多的地方还是WPF调样式上面,奈何WPF功力不够,暂时还是没有达到自己想要的效果.另外ViewModel ...
- Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议
在上一篇中,留下了许可协议的问题,目前已经解决.感谢网友武全的指点! 问题 一般我们是用WixVariable 来设定许可协议.如下所示: <WixVariable Id="WixUI ...
- WIX 安装部署教程(六) 为你收集的七个知识点
前段时间整理5篇WIX(Windows Installer XML)的安装教程,但还不够完善,这里继续整理了七个知识点分享给大家.WIX最新版本3.8,点击下载 WIX安装部署(一)同MSBuild自 ...
- Wix 安装部署教程(八) 自动生成XML小工具
这个功能类似于Heat.exe,指定文件夹,生成对应的WIX标签.Winform做的,代码简单,生成的标签需要粘贴到对应的目录才能使用,并不是一步到位. 需要设定两个参数,一个是文件夹路径,一个是文件 ...
- Wix 安装部署教程(九) --用WPF做安装界面
经常安装PC端的应用,特别是重装系统之后,大致分为两类.一类像QQ,搜狗输入法这样的.分三步走的:第一个页面可以自定义安装路径和软件许可.第二个页面显示安装进度条,第三个页面推荐其他应用.先不管人家怎 ...
- Wix 安装部署教程(十三) -- 多语言安装包
这几天摸索WIX的多语言安装包(这里是Wix的setup 工程,不是Bundle),终于走通了,感谢网友uni的指点.WIX的多语言安装包能够根据系统环境自动切换界面语言,你也可以通过命令指定语言.下 ...
- Wix 安装部署教程(十一) ---QuickWix
这次发布的是这两天做的一个WIX工具QuickWIX,主要解决两个问题点1.对大文件快速生成wix标签(files,Directories,ComponentRef):2.比较前后两次工程的差异.大的 ...
随机推荐
- MVC中使用EF:排序,过滤,分页
原文链接:http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/sorting-filtering-and-paging ...
- 大漠绑定测试工具-VB6
获取更新开始|版本:3.1652版 2016年12月27日|更新内容:1.取消自动更新错误的提示.\n\n友情提示:如网盘失效,请加QQ群(568073679)下载最新版|下载地址:http://ww ...
- AspNetPager 免费分页控件7.5.1版发布!
AspNetPager 免费分页控件7.5.1版发布,本次升级主要内容有: 修正了ShowDisabledButtons为false时html闭合标签丢失的bug:改为从System.Web.UI.W ...
- 京东2017校园招聘笔试题 【第K个幸运数】
题目描述 4和7是两个幸运数字,我们定义,十进制表示中,每一位只有4和7两个数的正整数都是幸运数字. 前几个幸运数字为:4,7,44,47,74,77,444,447... 现在输入一个数字K,输出第 ...
- php中的抽象类(abstract class)和接口(interface)
一. 抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类. 2 ...
- js 有用的代码
1. 如何创建嵌套的过滤器: //允许你减少集合中的匹配元素的过滤器, //只剩下那些与给定的选择器匹配的部分.在这种情况下, //查询删除了任何没(:not)有(:has) //包含class为“s ...
- vc11(vs2012)下编译php
需要原料: vs2012.php源码 1.本机的mingw没搞定,参考网上文章尝试vs2012编译,借助vs2012自带的命令行工具: 需要去bison官网下载bison.exe放在“c:/windo ...
- IQD文件模板以及cs7g.ini信息
COGNOS QUERY STRUCTURE,1,1 DATABASE, cognos TITLE,test BEGIN SQL { select time, city_id, city_name, ...
- 一个日期的下一个星期五 next_date
select next_day('18-5月-2001','星期五') nxt_day from dual;
- css3简单的图片轮播
<style> @-webkit-keyframes move{ %{left:0px;} %{left:-500px;} } #wrap{ width:500px; height:100 ...