runxinzhi.com
首页
百度搜索
[转]获取Setup文件的运行路径
昨天项目中因为需要在安装时做配置,而在打包之前是不知道配置的具体信息的。用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的文件名就不好处理了,为了防止在用户更改文件名后运行安装,你可以在程序中加上判断文件名更改的处理,给用户提示。
相关阅读:
用C#如何创建、读取cookie
根据拼音首字母搜索
物理路径和相对路径 斜杠和反斜杠
FileUpLoad导入文件类型
JS获取FckEditor的值
DateTime 的24小时和12小时制
JS中Date对象getYear()方法和getFullYear()方法区别
SQL Server 索引结构及其使用(二)
带你学习JQuery:事件冒泡和阻止默认行为
DropDownList 发现
原文地址:https://www.cnblogs.com/freeliver54/p/1232863.html
最新文章
《天风文章》V1.1.0 新闻/文章类asp.net2.0站点系统源码
.net2003制作安装包时出现“不可恢复的生成错误“
发现一个超强的C#反编译工具 Reflector
SQL2005中时,Diagrams的问题
Ajax入门实例第一篇 (Ajax.NET组件使用第一篇)
Sql Server2005,开启“clr enabled”
C#的鼠标控制代码
Cookie乱码解决方法
asp.net(C#) Excel导出类 导出.xls文件
CSS文字
热门文章
C#常用字符格式判断
存储过程模板
convert(varchar(10),字段名,转换格式)
asp.net 后台向前台注册JS脚本
TreeView 树形控件 asp.net
JS, CSS控制网页内容不让选择和复制
C#:rdlc 报表实例
Visual Studio快捷键 [VS2008/VS2005]快捷键
系统快捷键
dialog JS弹出窗口
Copyright © 2020-2023
润新知