我现在用vs2005 安装部署一个mysql安装包,现在想对该安装包做升级包现在新安装包要根据已安装的版本号来更新相应数据库,
如果ProductCode不改变的话,如果重新双击安装包进行安装,系统则提示“已安装该产品的另一个版本”后面经过google查到了说,把Version属性改变版本号,然后再改变ProductCode,但安装后
在添加删除程序里多出一个安装记录,相当于是另一个产品,把removepreviousversions属性设为true后,在点击新安装包重新安装后自动把以前的版本悄悄的卸载掉了(所有目录包括数据库文件全部移除了)
所以也没办法检测前一个到底是哪个版本,所有的数据文件也丢了,郁闷中……,感觉.NET打包机制太笨了!急求:.NET安装包的升级机制,
有没有保持ProductCode不变,只改变Version或UpgradeCode来实现升级,并且以前版本存在的文件不自动覆盖
在线等待中……别告诉我用InstallShare12来做安装程序,因为现在时间来不急了,产品明天就要交货了!

解决方案 »

  1.   

    1,removepreviousversions属性设为true
    2,修改版本号(版本号记得大于1.0.0否则会有问题)ProductCode跟着变
    3,保证UpgradeCode不变,以上是保证能正常更新以前版本
    4,转到文件视图将文件的permanent属性设置为TRUE,表示该文件在软件卸载时不被删除
      

  2.   

    对于“4,转到文件视图将文件的permanent属性设置为TRUE,表示该文件在软件卸载时不被删除”
    我测试过了,只是在程序菜单或添加删除时卸载时才不被删除,如果removepreviousversions属性设为true时的卸载还是照样删除所以这地方比较郁闷……,继续关注中!
      

  3.   

    那还有一种办法,将你需要不被删除的文件打包,在程序安装好后自动解开(添加custom action),因为这些文件不受安装程序控制是不会被删除的。