2016-11-28 84 views
0

我有一個InstallSheild msi,它創建一個註冊表項並向其中添加一個值。它在卸載時不會被刪除,因爲我們喜歡記住升級之間值的功能。如果該值已經存在,則從cmd行更新註冊表值InstallSheild

我的問題是,如果我通過命令行運行安裝程序並傳入新值,如何覆蓋該值?

現在它執行系統搜索來查找值,如果它存在,它將使用該值,無論您從cmd行參數中傳入什麼值。我希望我可以在某處添加一個條件,以表明它在cmd行中是否使用該條件而不是舊值。

+0

您目前如何添加該值?如果在自定義操作中處理它,那麼該操作是否可以檢查存在的註冊表存在/命令行(屬性)的不同組合,並執行正確的操作? –

+0

它不會使用我可以告訴的自定義操作。我是新來的安裝人員,所以我可能是錯的,但UI只是從文本框中獲取文本並將其放入屬性中,然後該屬性作爲組件放入註冊表項中。令我困惑的是,爲什麼它接受cmd行,如果它是全新安裝的,但是如果它已經存在則忽略它。 – dstew

+0

這將解釋爲什麼它不會覆蓋(如果組件在那裏,它不會重新安裝它,因此不會重寫密鑰),但不能解釋它在卸載後如何持續。除非它所在的組件是永久的,否則我認爲沒有任何干淨的答案。 –

回答

0

做到這一點的方法就是這樣的。

  1. 使您的系統搜索將值設置爲臨時值。
  2. 然後進行系統搜索後立即運行的自定義操作,如果它尚未通過cmdline設置,則用臨時值替換您的值。
相關問題