.net打包自定义操作时重写install如何找到安装包当前路径

时间:2022-09-18 03:01:06
需求是这样的:为了增加程序的灵活性,不用每次一些简单信息都需要重新打开工程打包,准备了一个set.xml文件,打算把一些基本配置都放在里面,然后跟着安装包放到一起,然后安装时,把该配置文件复制或移动到指定的安装目录。

目前安装目录找到了,有两种方法,都可以找到,如下:
1。string strPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); //安装目录

2。 string strTargetPath = Context.Parameters["setuppath"]; //setuppath 这个值是在该重写类库 的customActionData 处设定参数 /setuppath="[TARGETDIR]\" (如何弄就不详说了,又需要可以m我)

关键是现在我 需要找我安装包所在的路径,不知道怎样找。

在网上搜了很多资料,没找到啥有用的信息,刚刚又不死心的用“重写install 安装包当前路径”关键字百度了一下,还是没有找到。
各位经过的高手,谁知道如何取得,帮个忙。
帮顶的也有分哦。^__^
谢谢啦

15 个解决方案

#1


该回复于2011-01-12 10:15:00被版主删除

#2


难道分数不够高?

#3


setup Factory  _SourceFolder 
Assembly   Asm   =   Assembly.GetExecutingAssembly();   
string   filePath=   Asm.Location; 
 

#4


引用楼主 yuccawei 的回复:
需求是这样的:为了增加程序的灵活性,不用每次一些简单信息都需要重新打开工程打包,准备了一个set.xml文件,打算把一些基本配置都放在里面,然后跟着安装包放到一起,然后安装时,把该配置文件复制或移动到指定的安装目录。

目前安装目录找到了,有两种方法,都可以找到,如下:
1。string strPath = System.IO.Path.GetDirectoryName(System.Ref……


安装包所在的路径就是程序运行的路径啊    难道这个安装包不是你做的?

#5


安装包直接打 不好用吗

#6


引用 5 楼 zldnjack 的回复:
安装包直接打 不好用吗

增加这个动作的目的就是为了不用每次针对不同的客户都要打一个安装包,增加程序的灵活性,要知道打一次安装包必须在开发的环境上,有vs,有源代码,每次打都需要10分钟,这时间可是黄金阿。

#7


xrongzhen :安装包所在的路径就是程序运行的路径啊 难道这个安装包不是你做的?

回复:呵呵,看来你没看懂我需求。我是要在重写install的时候找到安装包当前的路径。关键是我要怎么找安装包所在路径阿,

#8


引用 3 楼 wuyq11 的回复:
setup Factory _SourceFolder 
Assembly Asm = Assembly.GetExecutingAssembly();  
string filePath= Asm.Location;


这个方法取到的是安装目录下重写安装类库的路径,还是不行啊。

看来还是我说的不清楚。
举个例子来说:程序打包后是setup.exe,我把它放在路经 F:\soft\mysetup\ 路经下,同时一起放进去的有文件set.xml

我双击setup.exe,开始执行安装,这里面用户可以指定安装目录,例如C:\Program Files\MYTestProgram\

重写install方法是要在安装的时候,能把F:\soft\mysetup\set.xml 文件复制到 C:\Program Files\MYTestProgram\ 里。
目前我是不知道怎样才能找到F:\soft\mysetup\set 这个目录,

#9


根据我的经验,普通的.net打包程序,无法实现此功能

#10


不会吧,幸亏项目不是很紧,继续等待解决方案。
相信这么寻常的需求,肯定有解决方法。

#11


引用 10 楼 yuccawei 的回复:
不会吧,幸亏项目不是很紧,继续等待解决方案。
相信这么寻常的需求,肯定有解决方法。


你错了,高估了微软的水平,你开以一直等着,将来总会有个版本实现此功能

#12


办法不是没有,比较复杂,
假设你的安装文件为setup.exe,
1新建一个exe 为A.exe
2copy A.exe + setup.exe  setup.exe

A.exe的功能:
获取自己的路径,启动真实的setup.exe,创建监听管道,在你的setup.exe中请求管道给你发送路径字符串,完成。

绝大多数情况下,没有必要做这么大的动静。

#13


引用 12 楼 anbam 的回复:
办法不是没有,比较复杂,
假设你的安装文件为setup.exe,
1新建一个exe 为A.exe
2copy A.exe + setup.exe setup.exe

A.exe的功能:
获取自己的路径,启动真实的setup.exe,创建监听管道,在你的setup.exe中请求管道给你发送路径字符串,完成。

绝大多数情况下,没有必要做这么大的动静。

是啊,我也考虑过这种情况,但是这样做起来与初衷相悖阿。

#14


哎,还没解决阿,不知道用cmd命令能不能获取当前执行安装程序的路径

#15


无满意答案,结贴了

#1


该回复于2011-01-12 10:15:00被版主删除

#2


难道分数不够高?

#3


setup Factory  _SourceFolder 
Assembly   Asm   =   Assembly.GetExecutingAssembly();   
string   filePath=   Asm.Location; 
 

#4


引用楼主 yuccawei 的回复:
需求是这样的:为了增加程序的灵活性,不用每次一些简单信息都需要重新打开工程打包,准备了一个set.xml文件,打算把一些基本配置都放在里面,然后跟着安装包放到一起,然后安装时,把该配置文件复制或移动到指定的安装目录。

目前安装目录找到了,有两种方法,都可以找到,如下:
1。string strPath = System.IO.Path.GetDirectoryName(System.Ref……


安装包所在的路径就是程序运行的路径啊    难道这个安装包不是你做的?

#5


安装包直接打 不好用吗

#6


引用 5 楼 zldnjack 的回复:
安装包直接打 不好用吗

增加这个动作的目的就是为了不用每次针对不同的客户都要打一个安装包,增加程序的灵活性,要知道打一次安装包必须在开发的环境上,有vs,有源代码,每次打都需要10分钟,这时间可是黄金阿。

#7


xrongzhen :安装包所在的路径就是程序运行的路径啊 难道这个安装包不是你做的?

回复:呵呵,看来你没看懂我需求。我是要在重写install的时候找到安装包当前的路径。关键是我要怎么找安装包所在路径阿,

#8


引用 3 楼 wuyq11 的回复:
setup Factory _SourceFolder 
Assembly Asm = Assembly.GetExecutingAssembly();  
string filePath= Asm.Location;


这个方法取到的是安装目录下重写安装类库的路径,还是不行啊。

看来还是我说的不清楚。
举个例子来说:程序打包后是setup.exe,我把它放在路经 F:\soft\mysetup\ 路经下,同时一起放进去的有文件set.xml

我双击setup.exe,开始执行安装,这里面用户可以指定安装目录,例如C:\Program Files\MYTestProgram\

重写install方法是要在安装的时候,能把F:\soft\mysetup\set.xml 文件复制到 C:\Program Files\MYTestProgram\ 里。
目前我是不知道怎样才能找到F:\soft\mysetup\set 这个目录,

#9


根据我的经验,普通的.net打包程序,无法实现此功能

#10


不会吧,幸亏项目不是很紧,继续等待解决方案。
相信这么寻常的需求,肯定有解决方法。

#11


引用 10 楼 yuccawei 的回复:
不会吧,幸亏项目不是很紧,继续等待解决方案。
相信这么寻常的需求,肯定有解决方法。


你错了,高估了微软的水平,你开以一直等着,将来总会有个版本实现此功能

#12


办法不是没有,比较复杂,
假设你的安装文件为setup.exe,
1新建一个exe 为A.exe
2copy A.exe + setup.exe  setup.exe

A.exe的功能:
获取自己的路径,启动真实的setup.exe,创建监听管道,在你的setup.exe中请求管道给你发送路径字符串,完成。

绝大多数情况下,没有必要做这么大的动静。

#13


引用 12 楼 anbam 的回复:
办法不是没有,比较复杂,
假设你的安装文件为setup.exe,
1新建一个exe 为A.exe
2copy A.exe + setup.exe setup.exe

A.exe的功能:
获取自己的路径,启动真实的setup.exe,创建监听管道,在你的setup.exe中请求管道给你发送路径字符串,完成。

绝大多数情况下,没有必要做这么大的动静。

是啊,我也考虑过这种情况,但是这样做起来与初衷相悖阿。

#14


哎,还没解决阿,不知道用cmd命令能不能获取当前执行安装程序的路径

#15


无满意答案,结贴了