VS自带打包程序如何在安装后自动运行一个EXE文件?谢谢

lid123456 2008-09-25 03:31:47
我用VS自带的打包程序来制作,打包没有问题,只是想在安装后,让安装程序自动运行一个EXE文件,请教如何设置????
...全文
1910 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky3333ss 2010-08-19
  • 打赏
  • 举报
回复
是在自定义操作中的 提交那里添加吗?
wangdh1980 2010-01-06
  • 打赏
  • 举报
回复
UP
lid123456 2008-09-27
  • 打赏
  • 举报
回复
如何安装后自动运行某个程序
lid123456 2008-09-27
  • 打赏
  • 举报
回复
我发现现在的问题原因,我已经能够调用想要执行的文件,但是这是在安装程序还没有完全进行完的时间,虽然是复制完了文件,在调用刚安装的文件时,还是说找不到。或是打不开等等,我想问,我如何能在完全安装完成后,再调用想执行的文件,即要在调用前先关闭掉安装窗口?
js1722 2008-09-27
  • 打赏
  • 举报
回复
在安装类的提交事件里执行~~~~
/// <summary>
/// 安装提交
/// </summary>
/// <param name="savedState"></param>
public override void Commit(System.Collections.IDictionary savedState)
{
try
{
base.Commit(savedState);

Process pro = new Process();
pro.StartInfo.UseShellExecute = true;
pro.StartInfo.FileName = this.Context.Parameters["targetdir"].ToString() + "SetUp.exe";//要执行的文件路径
pro.StartInfo.CreateNoWindow = false;
pro.Start();

Thread.Sleep(2000);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
lid123456 2008-09-26
  • 打赏
  • 举报
回复
请教
lid123456 2008-09-26
  • 打赏
  • 举报
回复
调用已经没有问题了,只是遇到一个批处理的小问题,当单独执行这个批处理时没有问题,当用安装程序来执行时,出现如下提示
提示'sn'不是内部或外部命令,也不是可运行的程序或批处理文件
'gacutil'不是内部或外部命令,也不是可运行的程序或批处理文件


以下是批处理的内容:

@ECHO OFF

sn -Vr DevExpress.Data.v7.2.dll
gacutil /i DevExpress.Data.v7.2.dll
sn -Vr DevExpress.Utils.v7.2.dll
gacutil /i DevExpress.Utils.v7.2.dll

pause

请教如何处理
b哈利路亚d 2008-09-26
  • 打赏
  • 举报
回复
http://blog.csdn.net/lanwilliam/archive/2008/03/07/2156925.aspx
给你个示例程序
lid123456 2008-09-26
  • 打赏
  • 举报
回复
我做的继承类的代码是这样的,请指点
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Diagnostics;
using System.IO;


namespace ClassLibrary1
{
[RunInstaller(true)]
public partial class Installer1 : Installer
{
public Installer1()
{
InitializeComponent();
}
public override void Install(System.Collections.IDictionary stateSaver)
{

base.Install(stateSaver); //调整后,这句放在了上面

Process p = new Process();
p.StartInfo.RedirectStandardOutput = false;
// p.StartInfo.FileName = @"mybat.exe";
p.StartInfo.FileName = @"C:\Program Files\营收系统\update.bat"; //这样只后到是能找到批处理文件了
p.StartInfo.UseShellExecute = true;
p.Start();
p.WaitForExit();
p.Dispose();
}
}
}
//这就是想实现运行这个批处理文件,现在使用绝对路径,能找到这个批处理文件,我想请教,如何直接定位于当前系统安装的路径,这个批处理就在项目所在的目录中。还有一点,虽然找到了这个批处理文件,也运行了,但是批处理中要执行的两个命令文件却找不到。如果直接手动运行这个批处理是没有问题的,下面是批处理的内容:
@ECHO OFF

sn -Vr DevExpress.Data.v7.2.dll
gacutil /i DevExpress.Data.v7.2.dll
sn -Vr DevExpress.Utils.v7.2.dll
gacutil /i DevExpress.Utils.v7.2.dll

pause
提示sn gacutil不是可用的内部命令,好像还是路径问题
wskhe 2008-09-26
  • 打赏
  • 举报
回复
学习中..
zhwdai 2008-09-26
  • 打赏
  • 举报
回复
帮你顶,我也正想要实现这么个功能
北京的雾霾天 2008-09-26
  • 打赏
  • 举报
回复
在你的安装项目里添加自定义操作了吧?可以在每一个节点下都添加。
lid123456 2008-09-25
  • 打赏
  • 举报
回复
我做的继承类的代码是这样的,请指点
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Diagnostics;
using System.IO;


namespace ClassLibrary1
{
[RunInstaller(true)]
public partial class Installer1 : Installer
{
public Installer1()
{
InitializeComponent();
}
public override void Install(System.Collections.IDictionary stateSaver)
{
Process p = new Process();
p.StartInfo.RedirectStandardOutput = false;
p.StartInfo.FileName = @"mybat.exe";
p.StartInfo.UseShellExecute = true;
p.Start();
p.WaitForExit();
p.Dispose();

base.Install(stateSaver);

}

}
}
lid123456 2008-09-25
  • 打赏
  • 举报
回复
能不能更详细点,我也从网上查阅,知道通过一楼的朋友的办法来解决,但是照着做了,却不成功,可能是重写Installer的基类不成功,进一步请教。
microblue 2008-09-25
  • 打赏
  • 举报
回复
很多安装程序都有这个选项的。
klyd 2008-09-25
  • 打赏
  • 举报
回复
不知道你想安装啥文件要是NET FrameWork之类的话可以在安装项目里设置好系统必备,要是别的exe文件的话建议使用专用安装程序生成软件installshield 和Installer VISE之类的软件去做。希望对你有所帮助
北京的雾霾天 2008-09-25
  • 打赏
  • 举报
回复
可以做一个自定义安装类(从Installer类继承),添加安装项目的自定义操作,重写Installer的基类代码来运行你的Exe。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧