安装前卸载前面的旧版本

haojialin 2009-12-22 08:49:41
我的软件总更新,所以每次更新后给客户安装,他总是提示有一个旧的版本,让客户自己卸载,客户闲麻烦,

所以我想在安装我这个新版本前,自动卸载旧的,不知道旧版本和新版本哪里不一样?版本?不能呀?我该怎么改,才能让他自己卸载?

于是我在 安装类里在安装前执行卸载
protected override void OnBeforeInstall(IDictionary savedState)
{

base.OnBeforeInstall(savedState);
xiezai();
}

private void xiezai()
{

string sysroot = System.Environment.CurrentDirectory;
System.Diagnostics.Process.Start(sysroot + "/msiexec.exe", "/x{2EFF8D5E-2E26-4AFC-8FC4-0E2B28B3AE19}");

}

可他还是提示有旧版本,然后就没执行这个,什么原因呀?还有什么更好的办法吗?
...全文
452 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
rzbai 2010-08-01
  • 打赏
  • 举报
回复
我也正在学习这方面的知识,正为卸载时如何保留某个已安装的组件困惑。
lihaibowl 2010-06-11
  • 打赏
  • 举报
回复
初学者, 也不清楚
jinnyss 2010-01-08
  • 打赏
  • 举报
回复
首先要知道你安装的软件是什么格式的,如果是msi的就比较容易了,找出这个软件的GUID。
假设下面这个软件msxml sp2

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{F662A8E6-F4DC-41A2-901E-8C11F044BDEC}

安装新的软件之前直接 调用系统命令
msiexec /x {F662A8E6-F4DC-41A2-901E-8C11F044BDEC} /qb (/qn) 可以静默卸载

关于这方面的问题欢迎和我来讨论
申宇田 2010-01-06
  • 打赏
  • 举报
回复
曾经研究过,如果用同样的ProductCode,总是不能成功卸载。
有个想法是,每次都用不一样的ProductCode, 然后通过寻找注册表信息来卸载不一样的版本,卸载的动作就放到一个dll里面做。
haojialin 2009-12-22
  • 打赏
  • 举报
回复
我在哪里检测呀?void OnBeforeInstall也不灵呀?
haojialin 2009-12-22
  • 打赏
  • 举报
回复
新版本和旧版本的ProductCode 和UpgradeCode 都是一样的吧?调用哪个Uninstall.exe 都一样吧?
haojialin 2009-12-22
  • 打赏
  • 举报
回复
有点迷糊,能大概写下不?
人工智能算法 2009-12-22
  • 打赏
  • 举报
回复
是windows安装程序msi格式的吗?
可以考虑在安装时候同时安装卸载程序Uninstall.exe
在Uninstall.ini中保存了安装时的操作.
Uninstall.exe撤销这些操作.
当有新的安装的时候首先检测,如果有旧版本,则调用旧版本的Uninstall.exe
完成卸载.最后安装新版本.
haojialin 2009-12-22
  • 打赏
  • 举报
回复
狼王_ 2009-12-22
  • 打赏
  • 举报
回复

纯 帮顶
haojialin 2009-12-22
  • 打赏
  • 举报
回复
高手呢?

111,120

社区成员

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

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

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