如何在C#中安装程序(自定义安装)运行前执行

时间:2021-12-08 05:27:32
急急急......
现在有两个安装程序,一个老版本,一个新版本,新版本安装后会把老版本的数据库删掉。为了不被删,我在自定义安装中加入了如下代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.IO;
using System.Windows.Forms;
namespace Library
{
    [RunInstaller(true)]
    public partial class InstallerDB : Installer
    {
        public InstallerDB()
        {
            InitializeComponent();
            this.BeforeInstall += new InstallEventHandler(ProjectInstaller_BeforeInstall); 
        }

        void ProjectInstaller_BeforeInstall(object sender, InstallEventArgs e)
        {
            string path1 = "C:\\metabolicbuster.mdb"; //老版本数据库路径
              string path2 = "E:\\metabolicbuster.mdb";
            if (File.Exists(path1))
            {
                File.Move(path1, path2);
                /*我是想在安装程序运行前把原来的数据库先剪切到E盘,在安装程序安装完了以后
                   public override void Install(System.Collections.IDictionary stateSaver)
                 {
                    base.Install(stateSaver);
                    File.Move(原数据库路径,新数据库路径);
                 }
                 在把原数据库剪切回来把新数据库覆盖掉。
                  */
            }
            else
            {
                MessageBox.Show("剪切文件不成功");
            }
        }  
  
     }
}

网上的代码说BeforeInstall 是在安装之前执行的,可不管怎样写,它好像每次都是在安装完成以后才执行的。
有没有什么办法可以让它在安装之前就去执行。或者别的办法,在安装的时候判断这个数据库存不存在,存在了就不安装新数据库了。(可以再自定义安装类里面找到我要安装的文件,然后在判断那些文件需要安装或不安装吗?)
急急急......
先谢谢各位了....

5 个解决方案

#1


up

#2


用installshield制作安装包看看
参考

#3


将InstallerDB 加入到必须条件中,另外安装程序有安装前\安装后操作的.

#4


引用 3 楼 ycg_893 的回复:
将InstallerDB 加入到必须条件中,另外安装程序有安装前\安装后操作的.

加入到必须条件中?什么意思啊?安装程序好像有个属性【RemovePreviousVersions】是说是否覆盖早期的版本,所以,每一次新安装之后就会把原来的全部覆盖掉了。至于你说的安装之前/后的设置是在那里啊。

#5


不好意思,各位,可能我说的太模糊,其实我刚也看了个帖子,和我的是一样的,【C#安装包升级】:http://topic.csdn.net/u/20090416/15/3b2d3576-57b1-4d8e-8cc2-cb42c002ca00.html
期待各位的回复

#1


up

#2


用installshield制作安装包看看
参考

#3


将InstallerDB 加入到必须条件中,另外安装程序有安装前\安装后操作的.

#4


引用 3 楼 ycg_893 的回复:
将InstallerDB 加入到必须条件中,另外安装程序有安装前\安装后操作的.

加入到必须条件中?什么意思啊?安装程序好像有个属性【RemovePreviousVersions】是说是否覆盖早期的版本,所以,每一次新安装之后就会把原来的全部覆盖掉了。至于你说的安装之前/后的设置是在那里啊。

#5


不好意思,各位,可能我说的太模糊,其实我刚也看了个帖子,和我的是一样的,【C#安装包升级】:http://topic.csdn.net/u/20090416/15/3b2d3576-57b1-4d8e-8cc2-cb42c002ca00.html
期待各位的回复