我在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首先创建这些条目?
答案 0 :(得分:0)
IMO,你创造了一个"木马" MSI。您可以在MSI中设置ARPSYSTEMCOMPONENT属性,它不会显示在“添加删除程序”中。但老实说,你可能根本不希望MSI在系统中自行注册。在这种情况下,从安装程序中删除某些关键标准操作,例如PublishComponents,PublishFeatures和PublishProduct。
答案 1 :(得分:0)
无论您是否应该这样做,您都可以修改Squirrel,因此它永远不会创建注册表项。只需注释掉对CreateUninstallerRegistryEntry的调用,或注释掉this file中的函数。
只需重新构建松鼠并用自定义版本替换nuget中的引用即可。
只要您使用大部分应用程序引导松鼠,我就不会发现这样做有任何问题。