删除卸载条目而不删除Squirrel.Windows安装程序中的应用程序

时间:2017-01-01 02:41:54

标签: windows-installer squirrel.windows

我在MSI安装程序中使用Squirrel安装程序。 MSI安装程序调用Squirrel安装程序。由于MSI安装程序将具有添加/删除程序中的条目,因此我想删除(或不创建)Squirrel安装程序创建的条目。

我所做的是在RemoveUninstallerRegistryEntry的事件处理程序中使用onFirstRun,但它给了我以下错误:

Couldn't write uninstall icon, don't care: System.IO.IOException: Illegal operation attempted on a registry key that has been marked for deletion.

基于此错误,我觉得我正在删除错误位置的卸载程序。应该删除卸载条目的位置是什么?或者有没有办法阻止Squirrel首先创建这些条目?

2 个答案:

答案 0 :(得分:0)

IMO,你创造了一个"木马" MSI。您可以在MSI中设置ARPSYSTEMCOMPONENT属性,它不会显示在“添加删除程序”中。但老实说,你可能根本不希望MSI在系统中自行注册。在这种情况下,从安装程序中删除某些关键标准操作,例如PublishComponents,PublishFeatures和PublishProduct。

答案 1 :(得分:0)

无论您是否应该这样做,您都可以修改Squirrel,因此它永远不会创建注册表项。只需注释掉对CreateUninstallerRegistryEntry的调用,或注释掉this file中的函数。 只需重新构建松鼠并用自定义版本替换nuget中的引用即可。
只要您使用大部分应用程序引导松鼠,我就不会发现这样做有任何问题。