制作安装文件,如何自动运行.bat文件

时间:2022-12-29 23:34:47
我在VS2008,用c#开发了一个程序,同时用自带的工具制作安装程序,

需要在安装过程中,或者说,需要在复制文件结束后,自动执行一个 reg.bat 文件,注册控件,该怎么办。

6 个解决方案

#1


用这个:
        [DllImport("shell32.dll")]
        public extern static int ShellExecute(IntPtr hwnd,
                                                 string lpOperation,
                                                 string lpFile,
                                                 string lpParameters,
                                                 string lpDirectory,
                                                 int nShowCmd
                                                );

#2


这是在程序里面执行的,
我这个reg.bat,只需要运行一次,我希望在安装的时候执行,该如何实现

#3


在安装代码里执行一次调用!

#4


引用 3 楼 sdl2005lyx 的回复:
在安装代码里执行一次调用!


能说的具体点吗?我是直接用VS里的安装部署的,可以吗?

#5


实现自定义安装类:

    [RunInstaller(true)]
    public partial class MyInstaller : Installer
    {
        public MyInstaller()
        {
            InitializeComponent();
        }
        protected override void OnBeforeInstall(IDictionary savedState)
        {
            base.OnBeforeInstall(savedState);

            try
            {
                 ShellExecute(IntPtr.Zero, "Open", fileName, "reg.bat", "", 1);                
            }
            catch (InstallException ex)
            { 
                this.Rollback(savedState);
                MessageBox.Show(ex.Message);
            }
            catch (Exception iex)
            { 
                this.Rollback(savedState);
                MessageBox.Show(iex.Message);
            }
        }
        [DllImport("shell32.dll")]
        public extern static int ShellExecute(IntPtr hwnd,
        string lpOperation,
        string lpFile,
        string lpParameters,
        string lpDirectory,
        int nShowCmd
        );
    }

#6


该回复于2011-10-12 17:59:07被版主删除

#1


用这个:
        [DllImport("shell32.dll")]
        public extern static int ShellExecute(IntPtr hwnd,
                                                 string lpOperation,
                                                 string lpFile,
                                                 string lpParameters,
                                                 string lpDirectory,
                                                 int nShowCmd
                                                );

#2


这是在程序里面执行的,
我这个reg.bat,只需要运行一次,我希望在安装的时候执行,该如何实现

#3


在安装代码里执行一次调用!

#4


引用 3 楼 sdl2005lyx 的回复:
在安装代码里执行一次调用!


能说的具体点吗?我是直接用VS里的安装部署的,可以吗?

#5


实现自定义安装类:

    [RunInstaller(true)]
    public partial class MyInstaller : Installer
    {
        public MyInstaller()
        {
            InitializeComponent();
        }
        protected override void OnBeforeInstall(IDictionary savedState)
        {
            base.OnBeforeInstall(savedState);

            try
            {
                 ShellExecute(IntPtr.Zero, "Open", fileName, "reg.bat", "", 1);                
            }
            catch (InstallException ex)
            { 
                this.Rollback(savedState);
                MessageBox.Show(ex.Message);
            }
            catch (Exception iex)
            { 
                this.Rollback(savedState);
                MessageBox.Show(iex.Message);
            }
        }
        [DllImport("shell32.dll")]
        public extern static int ShellExecute(IntPtr hwnd,
        string lpOperation,
        string lpFile,
        string lpParameters,
        string lpDirectory,
        int nShowCmd
        );
    }

#6


该回复于2011-10-12 17:59:07被版主删除