簡體   English   中英

如何通過自定義卸載操作獲取安裝目錄(由MSI安裝,由VS2010創建)?

[英]How to get the installation directory (installed with MSI, created with VS2010) at a custom uninstall action?

因此,我使用安裝項目為我的應用程序創建了一個簡單的msi安裝程序,並添加了一些自定義操作,這些操作可以處理諸如從存檔中提取文件之類的事情。 現在,我的程序文件中有兩個額外的文件-目錄,這意味着MSI不會在卸載時自行刪除該目錄。 我對此的解決方案是創建一個自定義操作,以刪除其余文件。

現在,只要在安裝時使用默認目錄,它就可以正常工作了。 但是,如果用戶選擇更改它怎么辦? 我認為在自定義操作中必須有一種非常簡單的方法來讀取目錄,但是我不確定這是什么。

據我通過谷歌搜索發現,存在與MSI軟件包相關的屬性,例如TARGETDIR。 但是,有些站點還說我應該在安裝階段自行設置此屬性。

這一切使我很困惑。 基本上,我看到兩種解決方法:

1)確保應用程序不會自行創建文件,MSI會照顧好它。 這將意味着更多的工作,因為我不負責這些額外的文件。

2)在卸載應用程序時,在自定義操作中找到安裝目錄,然后自己刪除最后幾位。 正如我所見,這是一種快速而又骯臟的方式,現在肯定足夠了。 但是如何做到這一點?

另外,當我在這里時,我不妨再問一個相關的問題。 如前所述,我在安裝時提取了一些文件。 現在,一旦我提取了它們,我想擺脫它們。 問題是,如果我這樣做,MSI會認為我的安裝已損壞,並在每次啟動該應用程序時將其復制回去。 那么如何避免這種情況呢?

無需使用自定義操作即可刪除文件。 MSI通過以下兩個步驟對這種情況進行了內置支持:

  1. 使用搜索找到要刪除的文件。 這是一個教程http://msdn.microsoft.com/zh-cn/library/aa371564(VS.85).aspx

  2. 然后,您可以安排文件刪除操作以實際刪除文件。 http://msdn.microsoft.com/zh-CN/library/aa371201(VS.85).aspx

關於第二個問題:

不要將存檔添加到“文件”表中。 而是創建一些自解壓檔案,並使用二進制自定義操作將其解壓縮。

http://msdn.microsoft.com/zh-CN/library/aa368085(VS.85).aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM