2012-10-03 39 views
4

從我需要的最終結果開始: 客戶可以在安裝過程中將正確格式的產品密鑰從剪貼板粘貼到輸入框中。是否可以粘貼到Windows安裝程序中的遮罩編輯控件?

我在哪裏分鐘: 我們使用WiX創建我們的MSI。我們目前使用可以正常工作的蒙面編輯控件。按下「下一步」按鈕時,產品密鑰驗證已使用自定義操作完成。產品密鑰驗證應保持不變,只有輸入方法是問題。

我已經花了最後一天研究實現這一目標的可能方法,並有一些想法,但我不確定它們中的任何一個都可以工作。我已經排除了試圖觸發粘貼的自定義操作,因爲我知道MSI無法捕獲該事件。

所以,我的想法是'從剪貼板粘貼'按鈕。這將觸發一個自定義操作,捕獲剪貼板項目,決定它是否看起來像產品密鑰(這將是簡單的部分),然後以某種方式將其粘貼到編輯控件中。請注意我如何說編輯控件,我不確定它是否完全有可能使用蒙版編輯控件,我不確定它甚至可以使用標準編輯控件。我已經有了一個自定義操作,它可以檢查許可證文本是否已被查看,這是通過找到許可證所在的窗口和'richedit'類窗口並檢索滾動位置來實現的。我以爲這種方法可能允許我將編輯控件設置爲剪貼板上的鍵,但我不確定這是否可行。

我已經閱讀了關於編寫我自己的UI控制器的可能性。我知道這是一項艱鉅的任務,但現階段沒有排除任何事情,我不知道從哪裏開始。

我最後的想法,雖然我沒有想過如何實現,但將改變我的屏蔽編輯控制爲標準的編輯控件,這顯然允許粘貼完整的產品密鑰,雖然沒有使用自定義操作,以驗證它是在正確的格式,我仍然不會進一步前進。但是,如果客戶要手動輸入產品密鑰,那麼這將需要某種自動添加破折號。

任何人都可以闡明我的任何想法的可行性,以及如何實現他們或任何其他方式來實現我的目標?

+0

大多數人只是使用標準的編輯控件,讓他們的CA做驗證。你是對的,MaskedEdit控件不能處理這個。 「從剪貼板」的概念很有趣。我從來沒有試圖這樣做,但也許我會找到一些空閒時間來放棄它。 –

回答

1

我設法做到了這一點,使用我最初想到的'粘貼剪貼板'選項。我在表單中添加了一個按鈕,該按鈕調用查詢剪貼板的自定義操作,如果成功,則在安裝程序中設置兩個屬性。一個包含格式化的產品密鑰,另一個基本屬性告訴剪貼板操作是否成功。蒙面的編輯控件鏈接到產品的關鍵特性,並通過刷新控制,

<Publish Event="Reset" Value="0" Order="3">ClipboardSuccess = 1</Publish> 

產品密鑰是在屏蔽的編輯控制人口。

+0

+1,聽起來相當優雅 –

+0

我試圖用同樣的方法做這件事,但它不適合我:MaskedEdit控件保持空白。我有一個公共屬性,代表許可證密鑰以及在Publish事件中使用的常規屬性。我添加了這裏列出的發佈行,如圖所示。我正在使用Wix 3.8。 日誌文件顯示正在調用的CA,並設置了兩個屬性,一個來自剪貼板,另一個來自「1」。但是MaskedEdit控件永遠不會改變。如果我後退一步,然後在安裝程序中向前移動,則會使用屬性的新值填充控件。 – Mozzis

+0

我再也無法訪問我爲此編寫的代碼,因此無法確定我擔心發生了什麼。我的第一個想法是,它可能與你設置遮罩編輯控件的值的格式有關? –

相關問題