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

C# 为什么“我的MSI安装”创建的快捷方式每次都会重新启动安装过程?,c#,.net,windows-installer,C#,.net,Windows Installer,我通过VS2008为我们的C#应用程序创建了MSI安装程序。我安装了它。它在桌面上为我创建了一个快捷方式。我点击了那个快捷方式,安装过程再次运行,最后我们的应用程序启动了。在我添加一些自定义操作来创建数据库之前,昨天不是这样的。我没有在安装程序中重新创建快捷方式。为什么会这样?是指向应用程序或设置的快捷方式吗?如果它指向您的设置,您将其更改为您的应用程序,那么问题是否会消失?MSI提供了一个自动修复功能,用于检查在您使用快捷方式启动应用程序时,MSI安装的所有组件是否仍然存在 在您的情况下,可能

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

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

MSI提供了一个自动修复功能,用于检查在您使用快捷方式启动应用程序时,MSI安装的所有组件是否仍然存在

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

以防止自动修复运行

  • 确保未删除任何文件、注册表设置或其他已安装的组件

  • 不要为这些组件设置键路径。这将阻止MSI检查这些特定组件
从您的其他问题来看,您的MSI似乎是由Visual Studio安装和部署项目创建的。不幸的是,在VisualStudio中没有修改密钥路径的选项。您有以下选项:

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

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


您是否正在生成多个副本?

使用Orca手动打开MSI。将以下记录添加到不带引号的属性表(属性,值):

属性='DISABLEADVTSHORTCUTS' 值='1'


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

也有同样的问题。在我的案例中,问题是Deoplyment项目属性中的“制造商”和“产品名称”字段。它必须与快捷方式指向的文件夹结构相同,否则您将在事件查看器中出现“资源”C:\Program Files(x86)[Manufacturer][ProductName]\'not Existence'错误。

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

您说得对。我删除了一些临时设置文件(批处理文件和sql文件)。我需要找到一种方法来避免这种情况。thanks@5YrsLaterDBA:由于您的设置似乎已经相当复杂,您肯定应该看看创建设置的其他方法,而不是VS。无论如何,VS安装项目将在未来消亡。如果您使用的是VS 2010,您也可以尝试InstallShield LE。遗憾的是,VS安装项目(VDPROJ)无法控制键文件(包括注册表项在内的所有资源都是单个组件的单个键文件),也无法禁用播发的快捷方式。你必须是一个相当好的微星绝地大师,才能知道如何解决这个问题。我建议看InstallShield 2010LE或WiX。VDPROJ在很多年前就为我而死了。它为我工作,谢谢!我在安装中忘记了一个过时的“config.txt”文件,但当应用程序启动时,该文件被删除并替换为“config.xml”文件。从安装程序中删除文件就足够了。