我有一個項目有很多插件和配置文件。現在我正在爲它做一個Visual Studio安裝項目。
我不想手動添加每個配置文件到安裝項目,所以我想這樣做:Visual Studio安裝項目 - 快捷方式導致安裝回滾
- 創建一個空的壓縮文件,說config.zip,並將其添加到安裝項目
- 添加一個預生成操作,將所有配置文件壓縮到config.zip
- 添加運行vbs腳本的自定義操作,該腳本將config.zip解壓縮到正確的文件夾並將其刪除。
的vbs腳本如下:
sArchiveName = "Config.zip"
sLocation = "C:\Data\Configurations"
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oShell = CreateObject("Wscript.Shell")
oShell.Run """" & s7zLocation & "7z.exe"" x " & sLocation & "\" & sArchiveName & " -aoa -o" & sLocation, 1, True
'--- If I uncomment the following 2 lines,
'--- as I click on the shortcuts the installation rollbacks.
'--- If I leave them the shortcuts work fine.
'Set f = oFSO.GetFile(sLocation & "\" & sArchiveName)
'f.Delete True
我的問題是,我在程序菜單中添加快捷方式會導致安裝的回滾。原因是在安裝過程結束時刪除config.zip。如果我離開它一切正常。
我已經搜索了一個解決方案,但找不到任何東西,有人可以幫我嗎?
這是一個自我修復的問題,我已經明白了。但我認爲有一種方法可以告訴Windows Installer不要跟蹤特定的文件。該項目有很多由不同人開發的插件,所以我想避免每個人都必須把他的手放到設置項目中。現在我知道這是不可能的,謝謝! –
有一種方法,但我擔心它會導致你誤入歧途。如果你設置了一個「空白組件GUID」,該文件將被安裝,但從未跟蹤或卸載 - 這將消除自我修復。看起來像解決您的問題,但它並不理想。您有時在新安裝時遇到文件覆蓋問題(未安裝新文件)。如果你刪除了zip文件,這個問題也不應該發生,但我不喜歡這種設計 - 這是不好的部署。首選的方法是使用WiX,並在項目設置完成後讓每個開發人員添加一個簡單的XML元素來添加他們的文件。 –