做.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"];

为什么哪些路径不是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来调用了。
第二,安装的时候有些文件时为产品运行服务的,有些文件是为安装服务的。后面的这种文件并不一定需要拷贝到安装目录下,另外如果网络安装,还可以保护你写的程序只安装时调用
不足之处请指正
做.net的早晚会用到,并且网上还没有这方面的正确资料或几乎很少的更多相关文章
- 今天做一个项目的时候,要在一个编辑的jsp页面的textarea标签设置value属性,结果发现他没有value属性,但是是编辑页面又必须要回显要修改的内容,所以在参考了w3cschool之后很轻松的解决了这个问题。
今天做一个项目的时候,要在一个编辑的jsp页面的textarea标签设置value属性,结果发现他没有value属性,但是是编辑页面又必须要回显要修改的内容,所以在参考了w3cschool之后很轻松的 ...
- 预热篇- 总结Delphi Xe4 做App的的可行性分析. ios平台的问题还需要自行学习
首先澄清一个问题, 很多同学其实是误会了, 以为只要搞定了Delphi 就能很快写快餐程序了. ios 本身的知识还是需要一些的, 并没有什么捷径可以走. 但如果一个团队有分工协作的话, Delph ...
- 做新时代的奋斗者!(好吧,我还没弄出python的编译环境)
Pictures: 今日分来的补记来嘞: Game 1:Guess the number. Python包含许多内建的函数,有些函数存在于称为模块的单独的程序中,可以使用import语句把它们的模块导 ...
- Deep learning:四十四(Pylearn2中的Quick-start例子)
前言: 听说Pylearn2是个蛮适合搞深度学习的库,它建立在Theano之上,支持GPU(估计得以后工作才玩这个,现在木有这个硬件条件)运算,由DL大牛Bengio小组弄出来的,再加上Pylearn ...
- iOS7 人机界面设计指南
iOS7 人机界面设计指南 苹果在WWDC 2013大会上发布了iOS 7,新系统一改5年来的拟物路线,在乔纳森•艾维的主导下,加入了更多的“扁平化”和“极简”现代设计元素. iOS7系统界面 ...
- Android计算器布局
Android(安桌)计算器布局实现 ——解决整个屏幕方案 引言: 学完了android布局的几种方式,做了一个android计算器. 我在网上搜索了这方面的资料,发现了布局都 ...
- UltraEdit正則表達式介绍及实例
前几天,有个将Excel中的数据导入到数据库中的需求.原本想到用程序读取Excel中的数据并存储到数据库中,但经一哥们的提醒,说用 EditPlus或UltraEdit这种工具直接将数据拼凑成SQL插 ...
- 你用 Python 做过什么有趣的数据挖掘项目?
有网友在知乎提问:「你用 Python 做过什么有趣的数据挖掘项目?」 我最近刚开始学习 Python, numpy, scipy 等, 想做一些数据方面的项目,但是之前又没有这方面的经验.所以想知道 ...
- Google是如何做测试的?
Google是如何做测试的?(一.二) 导读:本文译自 James Whittaker 在 Google 测试官方博客发表的文章<How Google TestsSoftware >. 在 ...
随机推荐
- jQuery复习:第二章&第三章
第二章 一.选择器 1.层次选择器 $(“ancestor descendant”)选取ancestor元素里的所有后代元素 $(“parent > child”)选取parent元素下的chi ...
- POJ 1922 Ride to School#贪心
(- ̄▽ ̄)-* //C跟着a君骑,然后更快的b君来了,C又跟着b君骑, //接着最快的d君来了,C就去跟着d君了, //最后最快的d君到达目的地时,C也就到了 //所以C的到达时间,就是最早到达的那 ...
- 老oj1965:polygon半平面交
题目链接:http://192.168.2.240:8080/JudgeOnline/showproblem?problem_id=1965 polygon半平面交 Time Limit:1000MS ...
- linux 移除svn文件夹
find . -name .svn -type d -exec rm -fr {} \;
- kettle连接Hive中数据导入导出(6)
1.hive往外写数据 http://wiki.pentaho.com/display/BAD/Extracting+Data+from+Hive+to+Load+an+RDBMS 连接hive
- [转]整理jquery使用好习惯
1.选择器Selector的使用 1)使用id定位性能最好 1.$("#id") 2)使用标签名定位,性能其次 1.$("p"),$("div ...
- 图片拉伸:resizableImageWithCapInsets
iOS 5.0 在iOS 5.0中,UIImage有一个新方法可以处理图片的拉伸问题 - (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)ca ...
- Tomcat7调优及JVM性能优化for Linux环境
标签: tomcat7 jvm 性能 分享到: 出处:http://www.iteye.com 该优化针对Linux X86_X64环境 1. Tomcat优化其实就是对server.xml优化(开户 ...
- 关于oracle数据库(8)查询2
筛选数据,直接加where条件,并且and,或者or 使用rownum获取前N条数据 select * from 表名 where rownum <= 数字; 如:获取前5条数据 select ...
- Webdriver实现下载功能,屏蔽掉windows弹出的对话框,FireFox下设置浏览器的属性,两种实现方式:
一.使用一个全新的FireFox浏览器打开Web应用,浏览器不带任何插件,也未对浏览器做任何默认配置,但需要对浏览器属性进行配置 // 获取浏览器的所有配置文件 ProfilesIni allProf ...