2009-01-21 64 views
4

我有一個使用Visual Studio 2005創建的.NET應用程序的MSI,其中包含一個自定義操作,用於在安裝結束時編寫一些註冊表項。我發現安裝程序在Windows XP SP2和SP3上運行良好。但是,當我嘗試在Vista PC上運行安裝程序時,安裝程​​序似乎幾乎一直到最後,但是隨後會死機並回滾,並顯示錯誤代碼2869.Vista上的MSI錯誤代碼2869

我使用帳戶登錄是管理員,但我仍然得到相同的錯誤。

回答

3

我找到了這個問題的確切答案。錯誤2869是無意義的錯誤,意思是「無法顯示真正問題的錯誤」。真正的錯誤是模糊的。在很多情況下,這個錯誤與模擬有關,但並非總是如此!

該解決方案既修復了錯誤顯示的bug,並且還修復了在Vista和Windows 7

的一兩件事,缺少模擬/管理員私法問題是手把手(有人一點不想知道關於JavaScript的任何事情,就像我一樣)來讓這個工作。

  1. 訪問http://blogs.msdn.com/b/nikhiln/archive/2007/04/25/post-build-script-to-fix-msi-issues-in-vista-for-vs-2005-setup-and-deployment-project.aspx

  2. 抓住腳本,並將其保存到您的部署項目文件夾PostBuildVistaFix.js

  3. 調出部署項目屬性
  4. 更改PostBuildEvent到

    cscript.exe ..\PostBuildVistaFix.js your_installer.msi

+0

順便說一句,這個腳本對於添加到所有的VS2005項目是有用的,以防萬一出現其他一些隨機錯誤。 – 2012-02-13 21:21:17

2

好吧,我發現了一個解決我的問題:

如果我登錄爲管理員用戶,而是僅僅通過雙擊運行安裝程序我點擊MSI或SETUP.EXE,如果我點擊右鍵,選擇「以管理員身份運行「我的程序安裝成功。

看起來這與UAC在機器上啓用的事實有關。我在UAC關閉的Vista計算機上試過,當管理員用戶正常運行時,安裝程​​序工作正常。

類似的快速和骯髒的方法來解決這個可以發現here

1

的解決方案,我想出來的是分發客戶清單配置在安裝過程開始時觸發UAC提升的EXE,而不是MSI(我們的應用程序必須按照每臺機器安裝)

1

問題與Vista在自定義操作上強制執行NoImpersonate位有關。這是以前被XP忽略的。

您無法在Visual Studio 2005中設置該位,但here是一個可以使其工作的過程。

0

中調用

msiexec /a "path-to-package.msi" 

幫助了我。