为什么使用MSI安装程序安装的应用程序将从Windows中消失

问题描述 投票:2回答:1

我们最近对Windows应用程序的安装和更新过程进行了一些更改,一些用户现在抱怨Windows有时会自动删除主应用程序.exe文件。

它通常发生在用户使用内置Web更新功能更新应用程序之后。该功能使用内置于高级安装程序工具中的.msi实现。

我们正在努力弄清楚造成这种情况的原因,并且没有找到一种方法来持续地重现这个问题(尽管我们已经看到它也会发生)。

以下是我们的安装和Web更新过程所发生的变化:

  • 我们的应用程序的主要安装程序现在是标准的.msi,它成为Windows安装系统的一部分,并且可以通过组策略和其他系统功能(例如回滚或版本)进行本机管理。在以前没有此问题的版本中,我们的安装程序是使用SetupBuilder工具构建的.exe
  • 我们在应用程序内部引入了重新设计的Web更新程序功能(以更新到应用程序中的新版本)。它使用相同的.msi作为安装的主要交付物。 .msi.exe的形式从我们的服务器下载,然后提取MSI并启动它。 MSI然后在我们的安装中更新文件。这些.exe.msi是使用Advanced Installer工具构建的,它为开发人员提供了这样的Web更新功能。在之前没有此问题的版本中,我们的Web更新功能是使用SetupBuilder工具开发的,该工具提供了自定义Web更新文件 - .exe Web更新程序,可以下载包含补丁的大量Web更新文件到我们的应用程序。

过渡到标准.msi安装程序的目的是让我们的客户轻松地在组织中部署应用程序 - 例如,使用组策略和其他类似工具进行大规模部署。

还有其他人遇到过这样的问题吗?有关如何排除故障并尝试重现的任何想法?

installation windows-installer group-policy uninstaller
1个回答
0
投票

理论:在做任何其他事情之前:The first thing I would ask the people who report the problem is if they have re-packaged your older, legacy (non-MSI) setup to be their own MSI file?这可能导致一个众所周知的升级问题,就像你解释的那样(文件丢失)。请先检查一下。告诉他们卸载现有版本,然后安装新版本 - 这是最简单的方法。并不总是足够(可能存在一些模糊的问题)。

Mismatched component GUIDs可能会在升级后导致丢失文件,因为文件版本降级方案和各种其他技术问题。您可以尝试安装到磁盘上的新默认位置以避免这些问题。这可以起作用的原因是非常技术性的,很难简洁地解释。从本质上讲,你将自己与“过去的罪恶”分开。通常足以更改有问题的文件的名称:例如MyApp.exeMyAppNew.exe或者可能添加主要版本:MyApp5.exe,但也许可以尝试更改文件夹ProgramFiles\MyCompany\MyApp => ProgramFiles\MyCompany\MyApp5

你如何配置升级?查看“升级”,选择的内容:“Uninstall old version first and then install new version”或“Install new version first and then uninstall old version”。

博客条目:: Why Windows Installer removes files during a major upgrade if they go backwards in version numbers(可能有所帮助)。


部署调试:对于MSI的开放式调试和一般的部署问题,显然需要收集intel,这意味着记录和系统检查。

日志记录:首先尝试为出现此问题的系统获取正确的日志文件。在Advanced Installer中,您可以在Install Parameters视图中勾选“启用详细日志记录”,以便为所有软件包安装启用详细日志记录。这会将MsiLogging property添加到已编译的MSI中,并且每次安装MSI都会导致在TMP文件夹中创建具有随机名称的MSI日志文件。查看文件夹,按日期排序,文件应位于顶部。 Suggest you do this and then tell the users to send you the log files when relevant. Maybe you have this setting enabled already?


进一步记录:有许多方法可以启用日志记录,您可以在这里找到描述:Enable installation logs for MSI installer without any command line arguments。 MsiLogging属性只是一种可能性。

© www.soinside.com 2019 - 2024. All rights reserved.