2010-10-31 155 views
1

我的應用程序在執行過程中有時會創建一個特定的註冊表值,即不是在安裝時創建的。此值位於我不想刪除的註冊表項內;我只想刪除我創建的值。因爲它不是在安裝時創建的,所以在Windows安裝程序卸載時不會自動刪除它。我可以在MSI中做些什麼來刪除這個值?如何在卸載MSI時刪除單個註冊表VALUE?

Registry表似乎沒有這個選項。這是否意味着我必須編寫自定義操作?如果是這樣,任何人都有任何例子?

我正在使用Wise Windows Installer Edition創建MSI。

也貼出here

+0

這awfull,微星並沒有去除RegistryValue提供標準技術。例如,我們應該刪除HKCU/Windows/Current/Version/Run/My程序 – 2012-02-28 13:03:07

回答

0

您確實需要執行自定義操作。

我最終在延遲部分的WriteRegistryValues之後放置了一個自定義操作。

刪除鍵該.vbs是這樣的:

const HKLM = &H80000002 
strComputer = "." 
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") 
strKeyPath = "SOFTWARE\Mozilla\Firefox\Extensions" 
strValueName = "[email protected]" 
oReg.DeleteValue HKLM,strKeyPath,strValueName 
1

對不起,您將需要自定義操作。

+0

不幸的是,這是爲了在組件未被卸載時刪除註冊表項。 – Rory 2010-11-01 20:24:17

+0

你是對的。我正在考慮具有名爲msidbRemoveFileInstallModeOnRemove的屬性的RemoveFile表的行。我不知道這個註冊表值是什麼,但它可以保持卸載狀態,但確保它在下次安裝時被刪除?從應用程序運行時的角度來看,我認爲結果是一樣的。或者,這個註冊表值操縱操作系統級別的東西,而不是應用程序本身?我知道要在卸載期間寫一個新的值,我需要一個自定義操作。 – 2010-11-01 21:30:20

+0

值得註冊的是我的軟件作爲Firefox的一個擴展,所以如果不影響其他軟件的話,它會很糟糕。一個自定義的動作,它將是! – Rory 2010-11-01 22:39:56