Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 Windows Installer不支持';单击应用程序快捷方式后才能完成安装?_Visual Studio 2010_Windows Installer - Fatal编程技术网

Visual studio 2010 Windows Installer不支持';单击应用程序快捷方式后才能完成安装?

Visual studio 2010 Windows Installer不支持';单击应用程序快捷方式后才能完成安装?,visual-studio-2010,windows-installer,Visual Studio 2010,Windows Installer,我有一个MSI安装程序,它是从VS2010安装项目构建的。安装的一部分包括添加或修改注册表项。(如果安装是升级,而不是首次安装,则会修改密钥。) 第一次安装时,安装程序工作正常,但在升级时,在单击应用程序快捷方式之前,安装似乎仍不完整。我的意思是:安装成功完成,但是在单击安装过程创建的应用程序快捷方式(即“开始”菜单)之前,这些注册表项将不存在。此时,安装程序启动时会显示一条消息,内容如下:正在配置applicationXXX,请稍候…。这种情况只发生一次,然后写下钥匙,整个宇宙都很好 但为什么

我有一个MSI安装程序,它是从VS2010安装项目构建的。安装的一部分包括添加或修改注册表项。(如果安装是升级,而不是首次安装,则会修改密钥。)

第一次安装时,安装程序工作正常,但在升级时,在单击应用程序快捷方式之前,安装似乎仍不完整。我的意思是:安装成功完成,但是在单击安装过程创建的应用程序快捷方式(即“开始”菜单)之前,这些注册表项将不存在。此时,安装程序启动时会显示一条消息,内容如下:
正在配置applicationXXX,请稍候…
。这种情况只发生一次,然后写下钥匙,整个宇宙都很好

但为什么会发生这种情况?更重要的是,我如何“强制”安装程序完成安装并写入这些注册表项,而不必单击应用程序快捷方式?我还应该提到,直接运行应用程序的可执行文件不会触发这个最终安装过程;只有在单击快捷方式时,它似乎才起作用


如有任何帮助/见解,将不胜感激

当使用快捷方式时,安装会自动修复,因为该快捷方式不可用。这是Windows Installer对损坏安装的正常行为

要确定升级期间未安装注册表项的原因,请尝试创建一个


注册表项组件的键路径很可能被视为已安装。如果键路径是文件而不是实际的注册表项,则可能发生这种情况。您可以检查表中的关键路径(使用Orca编辑MSI)。

为了防止其他人出现此问题,事实证明真正的罪魁祸首是Visual Studio错误:

谢谢你。好消息。从看日志中学到了一些有趣的东西。升级是先安装新版本,然后删除旧版本。删除过程删除了注册表项。然而,当我试图在一个新的安装项目中复制这种情况时,注册表项在升级过程中被正确修改,而在删除原始应用程序时没有被删除。让我觉得我的安装程序被破坏了。为了解决这个问题,除了修改注册表项的值外,我还重新命名了注册表项。这实际上也解决了我的问题!我的不同之处在于,我的升级案例引发了一个错误“
System.BadImageFormatException:无法加载文件或程序集'C:\Program Files(x86)\{Program}\{assembly}.dll”或其依赖项之一。此程序集由比当前加载的运行时更新的运行时生成,无法加载。
”在升级到Visual Studio 2010的同时,我还将.NET Framework从3.5.1升级到了4.0。