Ошибка установщика Windows ... «Невозможно получить типы установщика» - PullRequest
4 голосов
/ 24 февраля 2009

Возникает ошибка при использовании установщика Windows для установки источника события в развертываемом продукте.

Полученное сообщение об ошибке гласит следующее ...

Невозможно получить типы установщика в Сборка c: \ temp \ program.exe. -> Невозможно загрузить один или несколько запрашиваемые типы. Получить Свойство LoaderExceptions для более информация.

Вот блок кода, который создает установщик источника событий ...

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Diagnostics;

namespace myapplication
{
    [RunInstaller(true)]
    public partial class EventSourceInstaller : Installer
    {
        public EventSourceInstaller()
        {
            InitializeComponent();

            string eventSourceName = "MyAppSourceName";
            if (!EventLog.SourceExists(eventSourceName))
            {
                EventSourceCreationData data = new EventSourceCreationData(eventSourceName, "Application");
                EventLog.CreateEventSource(data);
                EventLog.WriteEntry(eventSourceName, "Source Added.");
            }
        }
    }
}

В проекте установщика я добавил настраиваемое действие при установке под названием «Основной вывод из MyApplication (Active)» для запуска установщика источника событий.

У меня есть следующие вопросы

  1. Кто-нибудь еще сталкивался с этим и в чем проблема?

  2. Как мне получить свойство LoaderExceptions программы установки?

Ответы [ 4 ]

2 голосов
/ 20 июня 2012

«Обнаруженные зависимости» вашего установочного проекта устарели. В моем случае обновление зависимостей не работает. Из-за добавления dll к зависимостям проекта установки visual studio обновила их все. После перестройки проекта установки ошибка больше не возникает!

2 голосов
/ 24 февраля 2009

Я никогда не видел этой ошибки, но путь c: \ temp \ program.exe очень странный. Вы пытаетесь запустить установщик из каталога c: \ temp \?

Вы уверены, что выходные данные всех проектов и всех используемых вами сторонних DLL включены в проект развертывания? Нажмите на все включенные файлы в проекте развертывания и проверьте их свойство SourcePath; это исходные файлы, а не целевая папка? Не временная папка?

1 голос
/ 24 февраля 2009

У меня была точно такая же проблема.

Я полагаю, что ваша программа ссылается на другие библиотеки DLL, которые установщик установил в GAC или где-то еще за пределами каталога приложения. Вы не можете рассчитывать на то, что эти DLL будут установлены до того, как будет выполнено ваше действие по установке.

Решение: Создайте отдельную DLL для вашего действия по установке и убедитесь, что DLL не ссылается на другие DLL (прямо или косвенно), которые не установлены внутри папки вашего приложения.

Кстати, если можете, переключитесь на какую-то другую технологию. Я не знаю, какие конкуренты лучше, но если вы делаете нестандартные вещи, проект установки VS не вызовет у вас ничего, кроме неприятностей.

0 голосов
/ 20 июля 2018

Моя проблема заключалась в том, что я использовал 64-битную версию installutil.exe вместо 32-битной версии.

  • 32-битный путь - C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319

  • 64-битный путь - C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...