做.net的早晚会用到,并且网上还没有这方面的正确资料或几乎很少

原文网址:http://www.cnblogs.com/langu/archive/2012/03/23/2413990.html

一直以来,找安装程序的msi源文件路径得到的都是“system32”的路径,安装程序做完了,学习WIX的时候发现了方法,并已经测试成功了。

网上有很多获取源文件路径的方法,比如

1、扫描当前所有进程,获取meiexec进程的路径

2、获取当前程序的路径

3、获取发起当前进程的路径

事实上这些路径都不是msi的路径。那么:

怎么获得msi文件的路径?

切换到“自定义视图界面”,打开“自定义操作”属性界面中customactionData属性填入/Sdir=[SourceDIR],

然后在安装方法中写上string sdir=Context.Parameters["SDIR"];

注意:

1、/Sdir=[SourceDIR]与/Sdir="‘[SourceDIR]‘"等效都可以获得路径,区别是后者得到的路径有“‘”单引号。(测试补充:如果路径中含空格则一定要使用双引号内部单引号的方法)

2、该路径需要处理才能使用,由于系统内部各种转义字符的缘故,得到的路径需要将“\\”替换成“\”,

方法sdir=sdir.replace("\\\\","\\"),也可以这么写sdir=sdir.replace(@"\\",    @"\"),

3、其他的写法均会报错

为什么哪些路径不是msi数据库文件的路径?

我们需要将安装程序分成两部分来看,一是setup.exe,二是[productname].msi

前者是引导程序,跟我们写的代码无关;后者是手写的代码和安装相关的文件等等。

msi源文件的路径是msi的一个属性,在win7等系统中右键属性详细信息可以看到msi文件现在的路径,在server2003中直接看不到。

执行msi文件的命令是msiexec.exe [productname].msi……,其中msiexec.exe 的路径是%windir%\system32\msiexec.exe

所以前面的那些方法都不适合windows installer安装过程中获得msi文件的路径,那些方法都是msiexec.exe的路径。

获得msi文件路径有什么用?

目前我想到的至少有2个主要作用:

第一,大多时候在做64位兼容的问题上,并不需要将x64和x86的安装包分开,但是vs又不让将这两者打包到一个msi数据库文件中。那么我们可以当x86的包生成完后,将x64的小程序方法到安装包的目录或指定子目录下,这样就可以通过sdir来调用了。

第二,安装的时候有些文件时为产品运行服务的,有些文件是为安装服务的。后面的这种文件并不一定需要拷贝到安装目录下,另外如果网络安装,还可以保护你写的程序只安装时调用

不足之处请指正

时间: 2024-10-16 20:24:49

做.net的早晚会用到,并且网上还没有这方面的正确资料或几乎很少的相关文章

CN上没有关于IBM的Initiate的文章,由于最近在做这方面的工作,分享下Initiate的开发心得~

MDM:主数据管理系统. Initiate:IBM的一款主数据管理软件的名称. CN上没有关于IBM的Initiate的文章,由于最近在做这方面的工作,分享下Initiate的开发心得-,布布扣,bubuko.com

很少人注意的暴利行业,月赚1万的6个小生意!普通人也很容易做!

不要认为月入过万很难!其实你如果认识的有老板的话,就只知道日入过万都很简单!但是对普通人来说成本都很大.今天给大家介绍几个普通人可以快速做的小生意! 第一是:开锁工!白手起家上海买房!小陈是个开锁匠.在这个行业工作了5年,技术很好.开锁上海收费都是100到400元!复杂的还要贵点!我过年的时间收快递,风一下子把门关了!叫了个开门的要350元,来了没有5分钟就开了!一天开个十个就是3000多啊!听他说在上海买房买车了啊! 很少人注意的暴利行业,月赚1万的6个小生意!普通人也很容易做!第二个是,卖煎

做移动支付软件开发智能养卡代还系统须知的以下几点!

1.信用卡代还系统开发公司以往的案例数量及难度系数,案例较多可以体现开发公司实力,案例真实性判断也有必要. 2.方案的设计专业程度,好的方案直接决定信用卡代还系统项目最终的成败,可以要求提供以往过了保密期的产品文档.原型交互等是否专业. 3.项目团队的管理,如果没有良好的项目管理,信用卡代还系统开发项目失败的几率会很高,敏捷开发还是瀑布流开发直接体现一个团队的成熟程度. 4.现有的开发过程中的文档是否专业,产品文档.测试报告等等,直接反应开发公司的专业程度. 5.报价是否合理,可以通过多家对比,

你的领导工作能力很强,凡事喜欢亲力亲为,平时给你安排的工作很少且指导不多,导致你感觉来了几个月无事可做、没有成长。对此,你怎么办?

例:你的领导工作能力很强,凡事喜欢亲力亲为,平时给你安排的工作很少且指导不多,导致你感觉来了几个月无事可做.没有成长.对此,你怎么办? 结合题干信息,当前要处理的关系是我与领导之间的上下级关系,面临一个核心问题是领导本身能力强,但是却不重视“我”,导致我在工作中无所适从.相信很多考生都是按照这个思维来理解题目,以至于掉入题目的陷阱.这个时候,需要我们跳出学生思维,结合实际去思考.第一,领导本身工作能力强,我们作为下属最直接的反应是什么,应该是很开心的,跟着这样的领导我们也会受到潜移默化的影响,个

自学Maya给初学者几点建议 很少maya做模型的,基本都使用zbrush

之前大部分工作是做手绘模型,后来为了拓展自己,学习了次世代.在这里希望给各位初学零基础的同学一些建议,希望对各位有所帮助.实在不明白就加我骚扰我吧,可以带你入门,但是能不能学好看你自己. Maya软件是一款世界顶级的三维动画软件,相对于别的三维软件,Maya软件功能完善,制作的效率高,也很容易上手, 而Maya在游戏制作方面主要用于高模和机械模型的制作,现在国内大部分人还是使用3Dmax的,而国外则恰恰相反更偏爱Maya 所以掌握好Maya对自己是很有用的,不管是自学Maya软件还是跟着**的老

国内站群多IP代理服务器做这方面的多吗?-国内多IP服务器

国内站群多IP代理服务器使用多IP的好处:一个好处是IP多,能放的网站就多.另外一个好处就是,一般人会绑定域名到附加IP.有***的时候,屏蔽附加IP.解析域名到其它附加IP时不影响主服务器的使用.如果只有一个主IP被屏蔽后,主服务器就不能访问了.为什么大多数人都选择多IP的服务器呢?要那么多IP有什么优势呢?现在大部分服务器一般配置有多个IP,增加IP费用也极其低廉, 如果一个服务器上绑定了多个IP地址, 这服务器上的所有IP地址均是可以同时使用的.国内站群多IP代理服务器---国内站群整C多

我想问一下,您做动图用的是什么软件,我找了一款,但是不是很清楚。期待您的回复~~

6,以下表达式的运行结果是: var END = Math.pow(2,53); var START = END -100; var count = 0; for(var i = START ; i <= END ;i++){ count ++; } console.log(count); A.0 B.100 C.101 D.其他 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 7,以下表达式的运行结果是: var arr = [0,1,2]; arr[10]

UltraEdit正則表達式介绍及实例

前几天,有个将Excel中的数据导入到数据库中的需求.原本想到用程序读取Excel中的数据并存储到数据库中,但经一哥们的提醒,说用 EditPlus或UltraEdit这种工具直接将数据拼凑成SQL插入语句更easy方便,也不用写不论什么代码.因为我本人使用UltraEdit,故考 虑用UltraEdit的正則表達式来做这件事,以下是这种一个过程. 如果导入的表字段为:name,email. introduce.在Excel中的数据相应的也是这种字段.值得注意的是:在excel中的数据,比方in

喜欢攻防的朋友可以看看

三步帮你揪出电脑中的隐藏文件:第一步:检查木马@echo offnet share ipc$ /deletenet share admin$ /deletenet share c$ /deletenet share d$ /deletenet share e$ /delete以上代码写成.bat批处理文件,放在系统 C:\WINDOWS\System32 文件夹,命名为 disshare.bat 里,退回桌面.然后按下Win+ R,输入gpedit.msc,在打开窗口中依次展开"用户配置→Win