2012-09-20 146 views
0

我有一个我使用Installshield 2012 Pro维护的MSI软件包。MSI,修复运行,但我不知道为什么

该软件包再次创建几年,需要定期维护,因为应用程序的新版本是我们的开发团队发布的安装。这个MSI已经在很多地方使用过,在许多机器上没有问题。

在一个客户的位置,他们已经在20台机器上安装了约20份应用程序。每台机器都完全一样。 定期地,由于未知原因,与该应用程序有关的注册表条目丢失。不是所有的人,一个或两个选择...相同的条目总是失踪。

我们到目前为止没有跟踪确切的根本原因,但是我们的一位支持工程师注意到当他们打开应用程序快捷方式时出现的MSI修复对话框。在此之后,注册表项失踪。

在每个缺少注册表项的实例上,我们都从c:\ Windows \ Installer目录中删除了MSI。在机器上我们也做了这个改变,到目前为止注册表的改变并没有消失。

这让我想到MSI在修复过程中以某种方式删除选定的注册表项,但我不知道如何。

  • 在与删除的条目相同的键下至少有50个注册表项。 (这些应用程序没有安装程序创建)
  • MSI软件包不插入任何键都在安装过程中
  • 有在所有
  • 任何自定义操作我只有在整个设定一个密钥文件MSI,这是安装在Windows \ System32下一个组件的快捷方式
  • 都不是“刊登了”

似乎有从安装目录中并没有再出现去除MSI之间有明显的联系,但我无法看到我的MSI中可能导致特定注册表项失效的内容耳。

我知道确切的原因,这这是主观上我的MSI或客户系统,从而一般地我问:

  • 为什么Windows中启动的MSI修复功能,在考虑上述
  • MSI可以改变注册表,考虑以上
  • 是否有MSI后安装禁用此MSI的自动修复功能?
  • 我该如何改变MSI以确保不会发生汽车修理?

感谢

+0

当你说去“丢失”的注册表值和密钥被删除或注册表值的数据设置为空/空? –

+0

@ChristopherPainter的值被删除,密钥本身仍然存在。 – Damo

+0

我需要确定我们使用的是相同的术语。如果你有一个SOMEE​​DATA类型的RegSZ值的SOMEVALUE ... SOMEDATA变成了NULL还是SOMEVALUE实际上完全被删除了? –

回答

0

开始通过证明汽车修理是否与您的产品。检查导致Windows Installer启动自动修复的组件ID的应用程序事件日志。那么,如果它是你的安装程序的一部分,找出原因。

你的MSI似乎不太可能会改变注册表。虽然你没有具体说有没有RemoveRegistry表项,但很难想象偶然会有什么隐藏。

只有不好的方法来禁用自动修复(一些全球性的,有些不涉及注册您的安装程序)。避免它们。

首先弄清楚什么是错的。然后弄清楚如何解决它。例如,如果在步骤1中确定触发自动修复的组件是您安装的一部分,则可以在出现此情况的计算机上设置logging policy,以便您可以获得详细的MSI日志。

+0

谢谢,我发现一个文件夹被删除(根本原因未知,通过事件日志感谢提示),这是触发修复。现在我们知道我在本地测试它的修复触发器,修复不会改变注册表。今天,我们将尝试一个客户单位,看看这是否会触发另一个删除注册表的某种程序。 – Damo

相关问题