删除卸载条目,而无需在Squirrel.Windows安装程序中删除该应用程序



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

我所做的是在事件处理程序中使用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.

基于此错误,我觉得我正在错误的地方删除卸载器条目。删除卸载条目的地方应该是什么?还是有一种方法可以阻止松鼠首先创建这些条目?

imo,您创建" Trojan" MSI。您可以在MSI中设置ARPSystemComponent属性,并且不会在添加删除程序中显示。但老实说,您可能根本不希望MSI使用系统注册它。在这种情况下,从安装程序中删除了某些关键标准操作,例如发布程序,发布Features和Publishproduct。

是否应该这样做,可以修改松鼠,以免创建注册表条目。只需评论创建nunInstallerRegistry的调用,或在此文件中评论该函数。只需重建松鼠并用您的自定义版本替换Nuget的引用就很容易。
只要您在应用程序的大部分中引导松鼠,我就不会看到这样做的任何问题。