2017-01-01 10 views
0

Я использую установщик Squirrel внутри установщика MSI. Установщик MSI вызывает установщик Squirrel. Поскольку установщик MSI будет иметь запись в «Установка и удаление программ», я хочу удалить (или не создать) запись, созданную установщиком Squirrel.Удаление записи удаления без удаления приложения в Squirrel.Windows 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. 

На основании этой ошибки, я чувствую, что удаление записи деинсталлятор в неправильном месте. Каким должно быть место для удаления записи для удаления? Или есть способ остановить Squirrel от создания этих записей в первую очередь?

+0

Когда я использую флаг '-s' с установщиком, он идет вперед и все равно создает запись деинсталлятора, так как она не запускает первую установку. – skjoshi

ответ

0

IMO, ваше создание «трояна» MSI. Вы можете установить свойство ARPSYSTEMCOMPONENT в MSI, и оно не будет отображаться в разделе «Добавить программы удаления». Но, честно говоря, вы, вероятно, не хотите, чтобы MSI самостоятельно регистрировала систему. В этом случае удалите определенные стандартные стандартные действия от вашего установщика, такие как PublishComponents, PublishFeatures и PublishProduct.

+0

Я не создаю троян MSI, хотя внутренний установщик (Squirrel) можно рассматривать как троян. Я не хочу скрывать запись MSI. Я пытаюсь скрыть запись деинсталлятора внутренним установщиком, так как эта команда удаления внутреннего установщика вызывается деинсталлятором MSI. Я просто хочу создать меньше путаницы для пользователя, имея 2 записи для 1 установки. – skjoshi

+0

Это определение троянской MSI. Внутренний установщик - это греки. См. Https://blogs.msdn.microsoft.com/robmen/2006/02/01/google-toolbar-beta-for-enterprise-a-trojan-horse-msi-package/ –

+0

Если вы действительно хотите, чтобы запись MSI добавьте программы удаления, чтобы MSI мог вызвать удаление и, в свою очередь, вызвать удаление белки, тогда это действительно не вопрос MSI. MSI ведет себя так, как ожидалось. Это белка, которую ты должен был подавить. Из любопытства, ваш MSI на пользователя или на машину? Является ли ваш установщик белки одинаковым или другим? –

0

Независимо от того, хотите ли вы это сделать или нет, вы можете модифицировать Squirrel, чтобы никогда не создавать записи в реестре. Просто закомментируйте либо вызовы CreateUninstallerRegistryEntry, либо закомментируйте функцию в this file. Достаточно просто перестроить белку и заменить ссылку на одну из nuget своей пользовательской версией.
До тех пор, пока вы загружаете белку с большей частью приложения, я не вижу никаких проблем с этим.