导入System.Configuration.Install类,用于打包时,重写Install方法。在安装的时候,也确实调用了自定义方法。但是当msi版本升级的时候,比如1.0.0升级到1.0.1,并不能捕获Install等任何事件。只有当安装或者卸载的时候,才能捕获Install或者Uninstall等事件。当msi版本升级时,有什么事件能捕获呢,也就说,怎么才能加入自定义操作。

解决方案 »

  1.   

    CSDN如此萧条了么,怎么没人顶啊
      

  2.   

    MSI包升级主要包含以下几个方面:
    1:版本号升级,比如从1.0.0修改为1.0.1
    2:ProductCode更新
    3:UpgradeCode不变修改了上述几个方面打包而成的MSI安装包,在旧版本机器上安装时,称之为升级,而不是先卸载后安装。
      

  3.   


    2和3应该反了吧,我觉得应该是ProductCode不变,UpgradeCode更新。
    ProductCode如果变化了,就变成另外一个新的安装包了
      

  4.   


    没有弄反,可参考http://msdn.microsoft.com/zh-cn/library/465253cd.aspx
    我是只对一个应用程序进行更新。
      

  5.   

    楼主究竟是说Install方法,还是说AfterInstall、BeforeInstall这些事件
    试了一下。Install方法仍然正常地被调用了,没问题
    至于AfterInstall、BeforeInstall这些事件,没试过,但只是为了加入自定义操作,一般也不需要使用
      

  6.   

    我试了System.Configuration.Install下所有的事件,如Install,AfterInstall、BeforeInstall等等都不行。如果是先卸载再安装,上面的事件都会触发。但是在原版本不卸载的前提下安装新版本,任何事件都不会触发。奇怪了。
      

  7.   

    是的,以前我解决过这个问题,在assmble.cs文件里面改版本号为*.*.*.*貌似是这样,每次编译后它就会自动增长,然后在安装时就会提示是否版本更新,就不需要删掉后再装了.