1

我在 vs 2008 中创建了一个 Web 设置项目并添加了一些自定义操作。在安装时,我得到了默认表单(apppool、appname、网站)、一些预定义的自定义表单和一些自制的自定义表单。现在,在安装时,我在注册表中添加了一些数据。

我只有一个问题:TARGETSITE 属性。此属性由默认表单填充(Context.Parameters["TargetSite"] 类似于 defaultWebSite 的 "/LM/W3SVC/1"),并且其值已正确添加到注册表中。在我使用修复功能之前一切都很好...

在修复过程中,安装会跳过前几个默认表单,因此 TARGETSITE 属性将为空(Context.Parameters["Targetsite"] 为 "")。可悲的是,我无法干预从注册表中获取所需的值,我正是出于这个原因添加了它。因为注册表值将在“覆盖安装”方法中触发自定义代码之前更新。甚至在更新注册表后也会触发 onBeforeInstall。

如果完成回滚,在修复时,注册表项将被重置为之前的正确值,所以我必须相信,我可以以某种方式从我的自定义操作代码中访问这个值。

有人对如何获得这个重要价值有任何建议吗?

PS:我尝试在注册表项中设置条件,这样它只会在 TARGETSITE 值不为空时更新,但我担心这会被忽略很多时间......注册表项中的 TARGETSITE != ""条件场绝对没有任何效果......

4

1 回答 1

1

我通过解决安装程序注册表项解决了这个问题。我在安装程序 registryEntry 下手动创建了一个子键,我在其中存储了我的 Context.Parameters["TARGETSITE"] 值。因此修复功能不会覆盖 keyValue,因为它是自定义键。现在我在上下文或注册表中都有我的价值。

FunFacts:当我在安装程序自己的密钥中创建 customKey 时,我利用了标准机制,它删除了安装程序的注册表项,我的 customKey 也将消失。

如果其他人有时遇到这个问题,也许这可能会有所帮助......

于 2009-12-17T12:59:12.100 回答