2009-02-24 198 views
4

使用Windows安裝程序在我正在部署的產品中安裝事件源時遇到錯誤。Windows安裝程序錯誤...「無法獲取安裝程序類型」

該錯誤消息我收到了下列內容...

無法獲取在 Ç安裝類型:\ 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的主輸出自定義操作安裝項目(活動) 「來運行事件源安裝程序。

我有以下幾個問題

  1. 能欣賞到這誰都跑,什麼是問題?

  2. 我該如何去檢索安裝程序的LoaderExceptions屬性?

回答

2

我從來沒有見過那個錯誤,但路徑c:\ temp \ program.exe很奇怪。你是否試圖從c:\ temp \目錄運行安裝程序?

您確定您使用的所有項目和所有第三方DLL的輸出都包含在部署項目中嗎?點擊部署項目中包含的所有文件,並檢查其SourcePath屬性;他們是原始源文件而不是目標輸出文件夾?不是臨時文件夾?

+0

Dour High Arch - 謝謝!不知怎的,DLL在安裝程序中被禁用。我不知道如何,但當我重新啓用它時,一切正常。再次感謝你的幫助。 – 2009-02-24 20:26:49

1

我有完全相同的問題。

我猜你的程序正在引用安裝程序安裝在GAC或其他應用程序目錄以外的其他DLL。在安裝操作運行之前,您無法依靠那些正在安裝的DLL。

解決方案:爲您的安裝操作創建一個單獨的DLL,並確保DLL不引用任何其他未安裝在應用程序文件夾內的DLL(直接或間接)。

順便說一句,如果可以的話,切換到其他技術。我不知道哪些競爭對手更好,但是如果你做非標準的東西,VS安裝項目會給你帶來麻煩。

2

安裝項目的「檢測到的相關性」不是最新的。在我的情況下,刷新依賴不起作用。由於向安裝項目依賴關係添加了一個DLL,Visual Studio將其全部刷新。重建安裝項目後,錯誤再沒有發生!

相關問題