2013-05-07 47 views
0

我有這個項目,它需要運行InstallerClass作爲安裝的一部分。安裝程序安裝程序的自定義操作不在C#/ .NET中工作

我將它添加爲自定義操作,並且它一直以這種方式工作多年。我們爲這個類做了一些維護,清理了解決方案,重新構建瞭解決方案,現在自定義操作沒有被觸發。

我知道他們沒有被觸發,因爲我有Debugger.Break()調用在清理之前工作,並且事實上創建的註冊表項目不再被創建。

這是怎麼回事?我能做些什麼來從MSI安裝程序獲取更多信息?

值得一提的是,我的機器是64位,但該項目意味着並構建爲32位(x86)。我曾經把它構建爲之前的任何CPU,現在用它構建它並不重要,沒有結果。

我已經做了一些更多的研究,發現如果Debugger.Break();不再工作可能是由於依賴性問題,我沒有得到任何錯誤或項目警告。我仔細地運行了MSI,但是我也無法從中做出一些事情。

在日誌中迷路後,我沒有任何用處。我重新開始並創建一個帶有彈出窗口的新安裝程序類。那工作。之後添加了Break(),它也起作用,添加了我想運行的使用Process語句,並且它工作了一次。

之後,我發現:如果我離開Debugger.Break()它不會被跳過,但如果我刪除它,它的工作原理...

是的,這是隨機的......這是怎麼回事?

+0

你是如何創建MSI的?您可以從MSI獲取詳細日誌,例如msiexec/i mymsi.exe/L * V log.txt。 – sarvesh 2013-05-07 22:23:01

+0

已經設法得到一個詳細的輸出,沒有提到任何被忽略的動作,不能做任何事情,看起來像一個錯誤 – javaNoober 2013-05-07 23:52:59

回答

0

這將是值得首先檢查在源代碼控制安裝程序進行了哪些更改。

無論如何,我看到了各種奇怪的情況,安裝程序的行爲很奇怪。幾點建議:

  • 確保base.Install是最後一次。
  • 以管理員身份運行VS。
  • 重新創建安裝程序項目(它們可能會損壞)。
0

嘗試MSI另一臺機器上 - 如果它的工作原理則無可厚非MSI和問題是你的機器。有可能一個MSI執行可能留下了一些殘餘。

從您的機器上卸載產品,然後使用產品代碼嘗試MSIZap。這將清理您的機器上的任何可能遺留的卸載殘留。

相關問題