在我們的維克斯安裝程序的項目,我們需要生成一個新的文件,讓我們稱之爲FILEB的基礎上,部署的文件,名爲FILEA在託管自定義操作功能。換句話說,在組件聲明中,我聲明瞭FileA。在自定義操作中(發生在提交階段),我需要基於FileA生成FileB。之後,由於FileA不再使用,我想在相同的自定義操作中將其刪除。無法安裝過程中刪除部署文件與維克斯安裝
在這裏,問題來了:默認安裝文件夾,這是程序文件,普通用戶是不允許添加文件(生成FILEB)到這個文件夾中的自定義操作(我不是100%肯定我對,但在我的測試中就是這樣,如果我將它安裝在另一個文件夾中,則根本沒有問題)。所以我想我需要授予創建文件的權限。爲了做到這一點,我將CreateFolder元素添加到包含FileA的組件中。整個組件的聲明是這樣的:
<Component Id='COMPONENT_NAME' Guid='MY_GUID'>
<!--OTHER FILES IN THE COMPONENT-->
...
<CreateFolder Directory='INSTALLDIR'>
<Permission CreateFile='yes' User='Everyone' GenericAll='yes' Delete='yes'/>
</CreateFolder>
<File Id='MyFileA' Name='FileA' Source='PATH_TO_FILEA' KeyPath='no' >
<Permission GenericAll='yes' User='Everyone' Delete='yes'/>
</File>
</Component>
組件實際上屬於組件組,它駐留在INSTALLDIR。在同一個組件元素中存在其他文件的原因是因爲我希望另一個文件成爲關鍵路徑,因此刪除FileA不會導致此問題。現在FileB的生成工作正常。但後來在相同的自定義操作中,刪除FileA時遇到了問題。它只是說:「訪問路徑'DEPLOYMENT_PATH_TO_FILEA'被拒絕。」我認爲問題在於FileA聲明,這就是爲什麼我在File下的Permission元素中添加了Delete ='yes',希望能夠將其刪除(雖然我不確定這是否意味着在安裝中可能刪除)。但是我仍然得到這個錯誤。誰能告訴我我做錯了什麼?
的另一個問題是,我真的不知道什麼是那些CreatFolder元素的目的。首先,如果目標是創建目錄結構,我認爲(嵌套的)目錄元素已經這樣做了。爲什麼在Component元素下面有這樣的元素時,大多數情況下你可能希望目錄結構與組件結構分離(組件只是使用目錄引用來引用正確的目錄)。其次,CreateFolder的默認目錄屬性是組件所在的父目錄。但是,通常多個組件駐留在同一個目錄中,就像我在這裏:多個組件位於同一個組件組中,其目錄元素引用INSTALLDIR。所以這些組件中只有一個具有CreateFolder元素,在我的情況下其Directory屬性是所有這些組件的父目錄。這種結構很難理解。我想我對CreateFolder元素有一些誤解。有人可以啓發我使用CreateFolder嗎?謝謝!
謝謝!
謝謝克里斯託弗,他們真的是有用的建議。我將修改我的WIX項目。該例程是從我們現有的Windows Installer項目中複製而來的。但我也明白你的意思是要刪除安裝中的已部署文件。順便說一句,FileA是一個mdb文件,FileB是mde文件 – tete 2012-07-06 06:15:14
是否有一個原因,你不能將你的mdb轉換爲mde作爲構建過程的一部分,然後部署mde文件?我在這裏沒有經驗,所以我不知道你可能試圖解決的問題。 – 2012-07-06 17:26:43
說實話,我也沒有這方面的經驗,雖然我問自己同樣的問題。因爲這就是我們當前的Windows Installer Project的工作原理,而我只是創建另一個部署項目的人:)我不熟悉Access編程。 – tete 2012-07-09 06:58:21