2013-04-01 95 views
0

我正在開發使用Installshield 2011的安裝程序,並且項目類型爲Basic MSI,我有自定義操作,這種操作應該在卸載過程中執行。這裏是我配置的自定義操作屬性的附加快照。自定義操作在卸載期間不起作用

Sanpshot of attached custom action for uninstallation

我面對現在的問題是,在沒有得到卸載過程中執行的配置自定義操作,並最終安裝的應用程序不會被刪除。

以下是詳細的日誌條目:

00532:(未知):的InstallShield 11時01分17秒:註冊微星服務器...

00533:(未知):11:01的InstallShield: 17:調用腳本函數MyFunction的

00534:(未知):11點01分17秒的InstallShield:CallScriptFunctionFromMsiCA()結束

00 535:(未知):CustomAction NewCustomAction1返回實際的錯誤代碼1603(注意,這可能不是100%準確,如果翻譯沙箱裏面發生)

00536:(未知):操作結束十一時01分17秒:NewCustomAction1。返回值3.

00537 :(未知):操作結束11:01:17:INSTALL。返回值3

00538:(屬性):屬性(S):DiskPrompt = 1

00539:(屬性):屬性(S):的UpgradeCode = {40AD9645-1459-4C32-8285-D1C0B163361D }

00540:(屬性):屬性(S):產品代碼= {84BDE810-2C23-48CA-A638-5B131DA3B57F}

我在這裏缺少什麼......?請幫助

感謝,

阿赫亞

+0

您的自定義操作試圖完成什麼?它是否試圖與在卸載過程中已被刪除的文件進行交互? 作爲一個方面說明:我避免像瘟疫一樣的InstallScript。 – NGaida

+0

問候NGaida,目前的自定義操作只包含除此之外的流行消息,我沒有做任何事情。基本上我想測試它之前我可以做我的實際實施,這是在卸載過程中從app.config文件中刪除XML標記。 – Chetan

+0

自InstallShield 12以來,InstallScript穩定。但是,我不再投資它了。我傾向於在C#/ DTF中偶爾做C++。但是我不會「避免」每一個InstallScript。 –

回答

2

我的第一個問題將你爲什麼要編寫自定義的動作呢? InstallShield內置的自定義操作(XML文件更改)已能夠在卸載時刪除元素。我的第二個觀察結果是,InstallScript作爲一種語言是堅實的,它對如何正確設計可能導致問題的自定義操作缺乏瞭解。我讀到:

Installation Phases and In-Script Execution Options for Custom Actions in Windows Installer

一定要安排在InstallInitialize和InstallFinalize之間的系統上下文遞延該修改系統中所有的自定義操作。此外,請務必使用CustomActionData模式,並在卸載被取消或失敗時進行相應的回滾操作。否則,您可能會遇到應用程序已安裝但缺少標記的情況。

當然,不要在已經存在的地方重新發明輪子。 (XMLFileChanges)它很少順利。

+0

當ISSTI第一次出現時,我被InstallScript燒掉了。我從那時起就避免了它,只是使用了C++自定義操作。儘管我完全同意;避免重新發明車輪。如果你覺得你需要,你應該問自己爲什麼。 – NGaida

+1

同意。那時你必須有一個setup.exe引導程序引擎運行時,並且有導致錯誤的各種DCOM/ROT問題。它還通過允許延遲的自定義操作訪問MSI句柄來違反MSI主體。但是,所有這些在7年前已經修復:http://blog.iswix.com/2006/04/installshield-12-beta2.html –

+0

謝謝你們,我會用XMLFileChanges – Chetan