2011-03-04 25 views
0

我遇到安裝問題。安裝程序運行命令行選項regasm.exe a .net com dll和/ codebase選項。從x64系統上的msi啓動時,Regasm.exe在安裝時失敗

當我從Setup.exe運行安裝(由installshield構建)時,一切正常。

當我從.msi運行安裝而不是regasm調用不成功,沒有任何註冊,程序不運行。

此問題似乎隻影響基於x64的系統,並且在x86系統上這兩種方法都有效。

任何想法可能是什麼問題?

編輯

的問題似乎是,作爲管理員登錄,即使MSI不以管理員身份運行。我仍然得到一個UAC對話框,但只能通過嚮導的中途。從setup.exe啓動時,我會在嚮導出現之前得到UAC面板。如果我運行.msi和一個管理命令提示符,那麼我得不到任何UAC面板,並且一切都按預期工作。

所以我想像一切都按預期工作嗎?並且要讓自定義安裝操作正常工作,必須使用管理權限運行msi?

+0

也許是幼稚的自定義操作,自定義操作,但你確定這兩種方法具有相同的權限訪問/修改/ etc。在你電腦上操作? – tchrikch 2011-03-04 11:04:05

+0

@tchrikch,不,我不確定,但我不希望他們有所不同,因爲設置只是啓動msi(或者我理解它的方式)。我正在運行以管理員身份登錄。 – 2011-03-04 11:07:04

回答

1

This blog post討論了需要從安裝程序的上下文中運行具有管理員權限的可執行文件。有問題的可執行文件是不同的(appcmd.exe,而在您的情況下爲regasm.exe),但問題聽起來很相似。

的一塊後,我認爲是與你有關的是:

原來,在默認情況下,自定義操作模擬一個開始安裝的用戶,無需管理員海拔安裝程序本身跑下。這可以通過將CustomAction的模擬屬性設置爲「no」來更改。這也需要添加Execute =「deferred」,並因此使自定義操作在InstallFinalize之前運行,而不是在之後運行。

我對InstallShield不熟悉,但看看是否有方法標記運行regasm.exe的自定義操作。你想尋找的選項(S),你可以設置類似表述爲以下之一(這些都是說同樣的事情的所有不同的方式):

  • msidbCustomActionTypeNoImpersonate
  • 設置對於「在系統範圍內延遲執行」
  • 設置「延遲執行,沒有冒充」
+0

非常感謝。不幸的是,我們現在使用的解決方案是'使用設置。exe安裝',但我已經記下了下一個版本,希望當我們開始構建新的安裝程序時,我們將能夠使用這些信息。直到那時我不能標記爲答案,但答案聽起來很合理,所以+1。 – 2011-03-17 08:29:28