资源大全 | 神秘文化 | 在线翻译 | QQ专区 | 视频教程 | 彩信频道 | 搜索引擎 | BT下载 |  | 网站地图
设为首页
加入收藏
联系站长
您现在的位置: 一百网络 >> ASP.NET编程 >> Asp.Net开发 >> 文档正文
最近更新
普通文档 获取Setup文件的运行路径
普通文档 TransactionScope出错
普通文档 DataSet中DataRelation有
普通文档 实例讲解符合中国特色的
普通文档 (翻译)从底层了解ASP.
普通文档 (翻译)从底层了解ASP.
普通文档 Silverlight在IE中无法显
普通文档 也谈自定义配置处理类
普通文档 Ajax中AutoComplete的使
普通文档 实战 HTTP 处理程序(HTT
推荐文章
推荐文档 七招制胜ASP.NET应用程序
推荐文档 ASP.NET+XML打造网络硬盘
推荐文档 打造通用ASP.NET数据分页
推荐文档 利用ASP.NET访问共享网络
获取Setup文件的运行路径

文章作者:未知 录入时间:2007-11-20 来源:本站原创
网站声明:本站的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出处和原始作者,文章版权归本网站与文章作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。

   昨天项目中因为需要在安装时做配置,而在打包之前是不知道配置的具体信息的。用InstallShield来做打包好像做这样的处理比较方便,但是使用Visual Studio创建安装项目来打包时好像不是那么容易,在网上查找相关的资料一直没有找到很好的方法来直接获取其运行路径,网上有人说继承Installer来做,但是无论如何所能取得的路径是系统msiexec.exe的运行路径,所以这种方法看起来是行不通了。获取其安装路径也是非常简单而且方法有很多种。
    想到以前在做项目时要求程序只能有一个运行实例,这种方法来处理岂不是很好,换种思路来处理:先取得当前运行的所有Process然后再找到那个Setup或是*.msi那不就好了。想到着就赶快动手试验,在程序中加上处理代码,很快搞定。
Process[] processes = Process.GetProcesses();
            
string tmp = "";
            
int i = 0;//调试时为了查找线程的个数
            foreach (Process pro in processes)
            
{
                
//MSI Title即为你的打包文件在运行时显示的标题
                if (pro.ProcessName.ToLower() == "msiexec" && pro.MainWindowTitle == "MSI Title")
                
{
                    
//这里在Vista下测试时因为要读写文件(由于Vista使用了UAC来增强安全性,
                    
//要求必须以管理员身份运行,而直接运行msi文件只能以普通权限来运行),
                    
//所以不让用户直接运行MSI文件,而要求必须从Setup.exe文件运行,
                    
//如果你不需要在Vista下使用则不用如此处理
                    MessageBox.Show("Please run setup.exe""ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    
throw new InstallException("run");
                }

                
else if (pro.ProcessName.ToLower().IndexOf("setup"&& pro.MainWindowTitle == "MSI Title")
                
{//判断ProcessName是否是setup,并且其MainWindowTitle为你的安装文件的Title
                    tmp = tmp + pro.Id + "" + pro.ProcessName + Environment.NewLine;
                    tmp 
= tmp + " " + i.ToString() + "=" + pro.MainModule.FileName + Environment.NewLine;//pro.MainModule.FileName即为Setup的完整运行路径
                    tmp = tmp + " " + i.ToString() + "=" + pro.MainWindowTitle + Environment.NewLine;

                }
                
            }

            MessageBox.Show(tmp);

不过此方法有点不妥之处,那就是如果用户改变了Setup.exe或是*.msi的文件名就不好处理了,为了防止在用户更改文件名后运行安装,你可以在程序中加上判断文件名更改的处理,给用户提示。
  • 上一篇文档:

  • 下一篇文档: 没有了
  •     查找更多“[组图]获取Setup文件的运行路径”的内容  
    相关连接
  • VS2008和.NET3.5的学习资源

  • .Net 虚拟框架的实现原理

  • 实战 HTTP 处理程序(HTTP Handler) (6)---条码随意打

  • 实战 HTTP 处理程序(HTTP Handler) (5)---不用临时文件,直接打开动态生成的文件

  • 实战 HTTP 处理程序(HTTP Handler) (4)--与Web程序共享Session