【问题标题】:Installer not removing previous versions安装程序不删除以前的版本
【发布时间】:2013-01-21 08:22:10
【问题描述】:

我有一个应用程序。为了安装应用程序,我使用了一个简单的部署项目,其参数如下:

DetectNewerInstalledVersion = true  
InstallAllUsers = true  
ProductCode = GUID (changing with version)  
RemovePreviousVersions = true  
UpgradeCode = GUID (Allways the same)  
Version = 1.0.5 (changing with each deployment).

问题是,此安装程序(部署项目)永远不会删除以前的版本。它安装在顶部,Windows 显示,我有 2 个版本的程序(即我安装的应用程序),但没有一个主题能正常工作。


编辑
我在 assemblyInfo: 中添加了一行,但它仍然没有任何改变。在更深入地分析了我的问题后,我意识到安装程序更改了 Program Files 文件夹中的大部分文件,但它从桌面上删除了图标并从注册表中删除了记录。在顶部安装后,我什至无法删除应用程序,因为我在控制面板 -> 程序 -> 程序和功能中看不到它。
如果我安装在上面,我将无法使用程序。但是,如果我从程序文件文件夹中运行它,它就可以工作(较新版本)。如果我安装两次,一切正常(第二次安装时,向导会要求修复或删除程序)。
也许这次有人有其他建议?
MSI 文件的解决方案不适合我,因为最终安装程序是 EXE 文件。

【问题讨论】:

  • 你能告诉我们到底是什么问题吗,因为你提到两个版本都不能正常工作??我的意思是当你点击两个版本时都没有打开应用程序或打开时崩溃应用程序?还是其他问题?
  • @Sankar:上次我遇到这个问题,有些安装程序组件会正确安装,有些会从以前的版本中遗留下来,所以通常会有混合的组装版本。
  • > “简单部署项目” - 你的意思是现代 Visual Studio 版本(2012)中不再存在这个?您是否尝试过使用 WIX,它是 Microsoft 的开源替代品并允许完全/详细控制?您是否尝试过使用日志文件生成进行安装并在“升级”时检查 MSI 日志的内容?
  • @Groo:感谢您的澄清,我想了解用户的问题,以便我可以帮助或他不?再次感谢 Groo
  • @Sankar:当然,我不认为你在抨击 OP,这只是我的经验(我遇到了 WiX 这个问题,而不是 VS 部署项目)。

标签: c# installation windows-installer


【解决方案1】:

我为此苦苦挣扎了很长时间,但它很简单。

  1. 去管理 VS Extensions 并安装 'Microsoft Visual Studio Installer Project' v0.9.9
  2. 右键单击您的安装程序项目并转到属性。对于同一产品的不同版本,请保持属性窗口中的 UpgradeCode 变量相同。
  3. 在不同版本之间更改您的 ProductCode 变量。
  4. 现在,当您在系统上安装具有相同 UpgradeCode 的产品时,安装程​​序将升级您现有的产品,并且“添加/删除”窗口中只有一个程序。

【讨论】:

    【解决方案2】:

    我也遇到了同样的问题。我通过在调用新版本的安装程序之前卸载旧版本来解决它。

    此代码将通过它的 ProductCode 卸载已安装的产品:

      try
      {
         Process p = new Process();
         p.StartInfo.UseShellExecute = false;
         p.StartInfo.CreateNoWindow = true;
         p.StartInfo.FileName = "MsiExec.exe";
         p.StartInfo.Arguments = @"/x{53A13817-D52F-4F16-AE27-68D01DA0A656} /passive";
         p.Start();
         p.WaitForExit();
      }
      catch
      {
         MessageBox.Show("Unable to uninstall Application.  Manually uninstall/reinstall to update.");
      }
    

    请记住将我的产品代码替换为您的。好的部分是,如果没有安装该产品,它什么也不做。

    【讨论】:

    • 我应该把这个放在哪里?在自定义操作中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多