2016-03-02 111 views
1

Inno Setup Help刪除註冊表項(這不是由安裝程序創建)(Inno Setup的)

dontcreatekey

當指定此標誌,安裝程序將不會試圖創建密鑰或任何值,如果密鑰不存在於用戶的 系統上。如果密鑰不存在,則不顯示錯誤消息。

通常,此標誌與uninsdeletekey標誌組合使用,用於在安裝過程中在卸載過程中刪除鍵,但不會創建它們 。

我的程序創建一個註冊表值下的當前用戶自動啓動部分(類型string),但只有在用戶明確地從設置屏幕這樣做。

我想要進入卸載程序進行清理,所以我增加了以下我的Inno Setup的項目:

[Registry] 
Root: HKCU; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "this_is_a_test"; Flags: dontcreatekey uninsdeletevalue 

但是這似乎並沒有工作。我覺得dontcreatekey標誌只適用於「鍵」¹而不適用於「值」。如果是這樣,我該如何做到這一點? (1)假設「key」是「SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run」(它將在安裝之前始終存在),並且「value」將是類型爲string的條目,該條目駐留在鍵。

回答

1

使用ValueType: none或完全忽略ValueType參數:

如果指定none(默認設置),安裝程序將創建的關鍵,但不是一個值。在這種情況下,ValueNameValueData參數將被忽略。

雖然說明文檔is not completely correct。當與uninsdeletevalue標誌相結合時,ValueName不會被忽略。

[Registry] 
Root: HKCU; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; \ 
    ValueType: none; ValueName: "this_is_a_test"; Flags: dontcreatekey uninsdeletevalue 
+0

所以......改變'ValueType'爲'因爲我打算none'作品...但由於或錯誤之類的? –

+0

這不是一個錯誤。這只是說明文件沒有涵蓋所有可能性。 –

+1

完美。謝謝。 –

相關問題