我们最近对Windows应用程序的安装和更新过程进行了一些更改,一些用户现在抱怨Windows有时会自动删除主应用程序.exe
文件。
它通常发生在用户使用内置Web更新功能更新应用程序之后。该功能使用内置于高级安装程序工具中的.msi
实现。
我们正在努力弄清楚造成这种情况的原因,并且没有找到一种方法来持续地重现这个问题(尽管我们已经看到它也会发生)。
.msi
,它成为Windows安装系统的一部分,并且可以通过组策略和其他系统功能(例如回滚或版本)进行本机管理。在以前没有此问题的版本中,我们的安装程序是使用SetupBuilder工具构建的.exe
。.msi
作为安装的主要交付物。 .msi
以.exe
的形式从我们的服务器下载,然后提取MSI并启动它。 MSI然后在我们的安装中更新文件。这些.exe
和.msi
是使用Advanced Installer工具构建的,它为开发人员提供了这样的Web更新功能。在之前没有此问题的版本中,我们的Web更新功能是使用SetupBuilder工具开发的,该工具提供了自定义Web更新文件 - .exe
Web更新程序,可以下载包含补丁的大量Web更新文件到我们的应用程序。过渡到标准.msi
安装程序的目的是让我们的客户轻松地在组织中部署应用程序 - 例如,使用组策略和其他类似工具进行大规模部署。
还有其他人遇到过这样的问题吗?有关如何排除故障并尝试重现的任何想法?
理论:在做任何其他事情之前:
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.exe
到MyAppNew.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属性只是一种可能性。