我有一个应用程序。为了安装应用程序我正在使用一个简单的部署项目,其参数如下:
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文件夹中的大多数文件,但它会从Desktop中删除图标并从注册表中记录。安装在顶部后,我甚至无法删除应用程序,因为我无法在控制面板中看到它 - >程序 - >程序和功能。
如果我安装在顶部,我无法使用程序。但是,如果我从程序文件文件夹运行它(新版本)。如果我安装两次,一切正常(第二次安装时,向导要求修复或删除程序)
也许这次有人还有别的建议吗?
MSI文件的解决方案不适合我,因为最终安装程序是EXE文件。
答案 0 :(得分:0)
我遇到了同样的问题。在调用新版本的安装程序之前,我通过卸载旧版本解决了这个问题。
此代码将通过其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.");
}
请记住用您的产品代码替换我的产品代码。好的部分是,如果没有安装产品,它什么都不做。
答案 1 :(得分:0)
我为此苦了很长时间,但这很简单。