为什么我的MSI安装创建的快捷方式每次都会重新启动设置过程?

时间:2010-09-29 19:59:24

标签: c# .net windows-installer

我通过VS 2008为我们的C#应用​​程序创建了MSI安装程序。我安装了它。它在桌面上为我创建了一个快捷方式。我点击了那个快捷方式,再次运行安装过程,最后我们的应用程序启动了。在我添加一些自定义操作来创建数据库之前,昨天不是这样的。我没有在安装程序中重新创建快捷方式。为什么会这样?

6 个答案:

答案 0 :(得分:6)

使用Orca手动打开MSI。将以下记录添加到Property表(Property,Value)中,不带引号:

Property ='DISABLEADVTSHORTCUTS' 值='1'

这也可以编写脚本并作为后期构建事件的一部分运行。

答案 1 :(得分:5)

MSI附带自动修复功能,可在您使用快捷方式启动应用程序时检查MSI安装的所有组件是否仍然存在。

在您的情况下,可能已删除了一个(或多个)组件,因此再次启动安装程序以修复您的安装。

防止自动修复运行

  • 确保没有删除文件,注册表设置或其他已安装的组件

  • 不要为这些组件设置密钥路径。这将阻止MSI检查这些特定组件

从您的其他问题看来,您的MSI似乎是由Visual Studio安装和部署项目创建的。不幸的是,没有选项可以在Visual Studio中修改密钥路径。您有以下选择:

  • 使用Orca手动修改MSI(这不是一个好的选择,因为它是一个手动步骤)
  • 写一个脚本,例如使用VBScript修补MSI文件
  • 转到更高级的安装系统,为您提供更多控制,例如WiX或NSIS

答案 2 :(得分:1)

快捷方式是指向您的应用程序还是您的设置?如果它指向您的设置并将其更改为您的应用程序,问题是否会消失?

答案 3 :(得分:1)

听起来系统认为安装已损坏并且正在自动尝试修复,。事件日志中的任何内容(在应用程序事件日志中查找MsiInstaller的源代码)。

您是否构建了多个副本?

答案 4 :(得分:1)

当应用程序删除安装期间部署的文件时,会发生这种情况。自动修复已激活,因此您将获得安装屏幕。

答案 5 :(得分:0)

有同样的问题。在我看来,问题是Deoplyment Project属性中的'Manufacturer'和'ProductName'字段。它必须与您的快捷方式指向的文件夹结构相同,否则您将最终得到'资源'C:\ Program Files(x86)[Manufacturer] [ProductName] \'不存在'错误里面事件查看器。