2012-11-25 59 views
3

我正在創建更新安裝文件。在我的初始安裝中,我有一個在[UninstallRun]中調用的EXE文件。在更新中,我想永久刪除此EXE文件,但它似乎總是會在更新後卸載時拋出錯誤「某些元素無法刪除」。更新以前的安裝設置

要刪除EXE,我試過在更新的[InstallDelete]期間刪除它。這會刪除該文件,但該錯誤消息在卸載時仍然會被拋出(即使所有文件已被刪除)。

我試圖在更新中更換EXE並使用deleteafterinstall標誌,但這並沒有什麼區別。

如果我什麼也沒做,只是安裝它,當我運行卸載程序時,EXE文件被調用,即使更新不再包含[UninstallRun]部分。所以它看起來像是初始安裝的安裝文件被用於卸載部分。

就本項目而言,我無法更改初始安裝,因此必須從更新安裝完成所有操作。有沒有辦法刪除放在UninstallRun部分中的現有文件?

回答

4

的問題是,從[UninstallRun]條目之前安裝已在卸載日誌被註冊,所以乾脆刪除它從你的腳本也不會停止生效,並刪除該文件將默認使其產生錯誤,因爲(大概)一些所需的卸載任務沒有發生,因爲該文件丟失。

您是否記得在原始安裝程序的[UninstallRun]條目中放置RunOnceId?如果是這樣,您可以使用相同的ID放置「替換」條目。你仍然必須使它指向一個EXE,但你可以使它成爲一個沒有操作的,或者(更好)使用Flags: skipifdoesntexist,並將它指向你已經刪除的那個。

如果您沒有使用RunOnceId,那麼沒有任何方法可以覆蓋上一個條目。你只需要放入一個不執行任何操作的虛擬exe文件。

+0

不幸的是,我沒有把一個RunOnceId,所以我必須把一個虛擬文件。這將是所有未來更新的情況嗎,還是可以在第二次更新中添加一些內容,以便我可以在將來更新它?謝謝 – superwpf

+1

如果您在第一次更新中放入RunOnceId,那麼您將能夠在第二次更新中覆蓋該次數 - 但如果有人從原始安裝直接進入第二次更新,那麼您又面臨同樣的問題。所以你永遠無法完全擺脫它。 (還要注意,如果用戶多次運行原始安裝程序,忘記RunOnceId也意味着它最終可能會多次運行。) – Miral