Visual studio VS 2008 MSI安装程序:修复时Context.Parameters[“TARGETSITE”为空

Visual studio VS 2008 MSI安装程序:修复时Context.Parameters[“TARGETSITE”为空,visual-studio,windows-installer,setup-project,repair,Visual Studio,Windows Installer,Setup Project,Repair,我在VS2008中创建了一个web设置项目,并添加了一些自定义操作。 安装时,我会得到默认表单(apppool、appname、website)、一些预定义的自定义表单和一些自制的自定义表单。 现在,在安装过程中,我在注册表中添加了一些数据 我只有一个问题:TARGETSITE属性。 此属性由默认表单(Context.Parameters[“TargetSite”]类似于默认网站的“/LM/W3SVC/1”)填充,并将其值正确添加到注册表中。 在我使用修复功能之前一切都很好 修复时,安装将跳过前

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

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

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

如果在修复时执行了回滚,注册表项将重置为之前的正确值,因此我必须相信,我可以通过某种方式从自定义操作代码中访问此值

有人对如何获得这一重要价值有什么建议吗

附言: 我试图在registrykey中设置条件,这样只有当TARGETSITE值不为空时才会更新,但我担心这会被忽略。。。
目标站点!=“”在注册表项条件字段中完全没有任何影响…

我通过处理installers注册表项解决了这个问题。 我在installers注册表项下手动创建一个子项,在其中存储Context.Parameters[“TARGETSITE”]值。 因此修复功能不会覆盖keyValue,因为它是一个自定义密钥。 现在,我在上下文或注册表中都有了自己的值

有趣的事实: 当我在Installers自己的注册表项中创建customKey时,我利用了standart meachnism,它删除了Installers注册表项,我的customKey也将随之消失


如果其他人在某个时候遇到这个问题,这可能会有所帮助…

我通过使用installers注册表项解决了这个问题。 我在installers注册表项下手动创建一个子项,在其中存储Context.Parameters[“TARGETSITE”]值。 因此修复功能不会覆盖keyValue,因为它是一个自定义密钥。 现在,我在上下文或注册表中都有了自己的值

有趣的事实: 当我在Installers自己的注册表项中创建customKey时,我利用了standart meachnism,它删除了Installers注册表项,我的customKey也将随之消失

如果有人在某个时候遇到这个问题,也许这会有所帮助