在程序和特征/添加删除程序中启用修复选项

时间:2021-11-12 02:51:08

I've searched all over for a solution and have not been able to get them to work.

我已经搜遍了所有的解决方案,并且无法让他们工作。

My company's product used to have the Repair option when selecting the product in the Programs and Features dialog. You could also right click on the product and select Repair there as well. Just before I inherited the installer projects, this Repair option disappeared. I looked around to see if anything was disabling this option and couldn't find anything.

在“程序和功能”对话框中选择产品时,我公司的产品曾经有“修复”选项。您也可以右键单击该产品,然后选择“修复”。就在我继承安装程序项目之前,此修复选项消失了。我环顾四周看看是否有任何东西禁用了此选项,但找不到任何东西。

In InstallShield DisableRepair is set to No. There also is no registry key set in the Uninstall section for the product for NoRepair when the product is installed. By default, I believe I should be seeing the Repair option and don't understand why it's not there. I've tried messing with ARPNOREPAIR in custom actions, all to no avail. I even created a registry key for NoRepair with both 0 and 1 for DWORD values to see if it actually would work and it did not. I'd like to say that there is some code somewhere that is disabling it, but I've checked everywhere and even talked to the previous installer coworker and he doesn't know of anything removing that option.

在InstallShield中,DisableRepair设置为否。安装产品时,NoRepair产品的卸载部分中也没有设置注册表项。默认情况下,我相信我应该看到修复选项,不明白为什么它不存在。我已经尝试在自定义操作中弄乱ARPNOREPAIR,但都无济于事。我甚至为NoRepair创建了一个注册表项,其中0和1都用于DWORD值,以查看它是否真的有效,但事实并非如此。我想说有一些代码禁止它,但我已经检查过,甚至与之前的安装工友谈过,他不知道有什么东西可以删除该选项。

Does anyone have information on this?

有没有人有这方面的信息?

1 个解决方案

#1


0  

After lots of digging around and testing I have found out some interesting things and a solution to my issue. It turns out that there was a C# custom action that was creating a separate registry entry under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall. Also, ARPSYSTEMCOMPONENT was being set to 1 in InstallShield which was disabling the original entry from showing in Programs and Features, while the new entry was set to show. Apparently NoModify and NoRemove work with the new entry, but not NoRepair(no idea why this is). My solution was to go back to the original entry and modify the keys that I was adding in the custom action.

经过大量的挖掘和测试后,我发现了一些有趣的东西,并解决了我的问题。事实证明,有一个C#自定义操作在HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall下创建一个单独的注册表项。此外,在InstallShield中将ARPSYSTEMCOMPONENT设置为1,这禁止原始条目在“程序和功能”中显示,而新条目设置为显示。显然NoModify和NoRemove使用新条目,但不是NoRepair(不知道为什么会这样)。我的解决方案是返回原始条目并修改我在自定义操作中添加的密钥。

#1


0  

After lots of digging around and testing I have found out some interesting things and a solution to my issue. It turns out that there was a C# custom action that was creating a separate registry entry under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall. Also, ARPSYSTEMCOMPONENT was being set to 1 in InstallShield which was disabling the original entry from showing in Programs and Features, while the new entry was set to show. Apparently NoModify and NoRemove work with the new entry, but not NoRepair(no idea why this is). My solution was to go back to the original entry and modify the keys that I was adding in the custom action.

经过大量的挖掘和测试后,我发现了一些有趣的东西,并解决了我的问题。事实证明,有一个C#自定义操作在HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall下创建一个单独的注册表项。此外,在InstallShield中将ARPSYSTEMCOMPONENT设置为1,这禁止原始条目在“程序和功能”中显示,而新条目设置为显示。显然NoModify和NoRemove使用新条目,但不是NoRepair(不知道为什么会这样)。我的解决方案是返回原始条目并修改我在自定义操作中添加的密钥。