Как запустить nGen в конце установки (MSI)?

Я хотел бы выполнить nGen в конце моей установки просто для улучшения воспринимаемой производительности первого запуска моего приложения. Как я мог это сделать? Есть ли передовая практика? Могу ли я быть уверенным, что nGen всегда установлен с .NET Framework?

Спасибо!

Ответ 1

Вы можете создать свою сборку, используя специальное действие установщика. Следующие ссылки объясняют это более подробно:

http://www.dotnetperls.com/ngen

http://www.bobpowell.net/prejit.htm

Я также могу вспомнить хорошее обсуждение установщика Paint.NET(который включает загрузку .NET Framework, предварительную JITting и т.д.), но я не могу найти его в данный момент. Я отредактирую этот пост, если снова встречу его.

Ответ 2

Прежде всего, "Да", вы можете гарантировать, что если у них установлена ​​инфраструктура .Net, у них есть Ngen. Единственное, что вам нужно знать, - это какая версия, которую они установили, поскольку она отличается от 1.1 и 2.0. То, что я делал в прошлом, просто создало script, который мой установщик вызывает в самом конце, который запускает ngen на всех сборках.

Ответ 3

Этот пост в блоге должен быть полезен.

Изменить. Поскольку вы не используете Wix, тогда this также может быть полезен.

Ответ 4

Чтобы улучшить воспринимаемую производительность при запуске, взгляните на статику в своем приложении. Многие статики могут вызвать значительное количество накладных расходов при запуске приложения.

Кроме того, рассмотрите возможность иметь только свою основную форму в EXE и все остальное в отдельной DLL. Это не только улучшает производительность, но и помогает в том, чтобы отделить представление от данных.

Наконец, если ваш набор в NGENing, посмотрите на помощь по выполнению пользовательских действий в MSI. Вы должны иметь возможность настраивать собственное действие, чтобы делать то, что вы хотите.

Ответ 5

Как говорит Micah, Да, вы найдете NGen, установленную с .Net Framework.

Взгляните на примеры установщика WiX 3.5, как настроить свои сборки во время установки.

NGen: Создание проектов установки

Надеюсь, это поможет вам.