Nsis的自我理解

2021-05-28 16:36:22 字數 2386 閱讀 2005

nsis 指令碼語言的理解

1. nsis 語言的理解

nsis指令碼語言比較獨特,類似於巨集彙編,語法有些像c語言,感覺是純面向過程的東東。功能還算強大,能呼叫windows api,支援用動態鏈結庫形式的擴充套件。能呼叫和建立核心物件。例如可用用createmuteex()用來建立單例項。此處深有體會。
2. 跟c語言的區別

c語言必須有乙個_tmain()函式,並且僅有乙個,而nsis想對應過去就是 section -- sectionend,必須最少有乙個,可以有多個。

相同之處都是順序執行。 在nsis當中有 .oninit, .onguiinit ... 等等好多類似的函式。這些函式在section 之前執行。

3. 重點理解page

page有點解釋不清楚,但是可以肯定的是page先先於section 執行。
4. 針對自己做的安裝包貼圖問題。

我做的安裝包的解除安裝過程沒有載入貼圖。原因自己分析下:自己安裝安裝包的過程是page custom test1, 自己定義的page,此處可以正常貼圖。而在解除安裝的過程是自己寫的section uninstall。自處呼叫nsis預設的樣子,即沒有貼圖的樣子,如果需要貼圖,還需要自己load skinse. 

在section uninstall 片段當中呼叫

skinse_nsis::setskinpath /nounload "$pluginsdir\qq2011skin.zip" 就實現了載入 qq2010skin.zip 當中的了。此處需要多說一下, skinse 既可以載入zip檔案,也可以載入普通的。

skinse支援兩種**配置方式。第一種:把所有**資源配置在資料夾中;第二種:把所有**資源打包成zip格式檔案。這兩種格式型別在vc版本中採用如下兩巨集定義:

#define skinse_skin_style_folder   0             //load the skin resources from the folder

#define skinse_skin_style_zip      1             //load the skin resources from the zip 

呵呵。5. 需要理解killprocess問題,下面介紹。

// 後續

6. 需要理解createmute()對應到nsis也是一樣的,需要理解

// 後續

7. 繼續深入理解skinse 的其中乙個可以動態跟控制項換貼圖的優勢。慢慢理解

// 後續

什麼是skinse?

skinse是一款真正意義上適合軟體介面開發的c++介面庫。採用xml管理gdi資源(如:、字型、顏色等),最大程度將介面與邏輯分開,讓程式設計師有更多的時間去進行軟體內部的邏輯處理。skinse擴充套件了非常豐富的api介面,相容其他介面控制項,使介面開發更加靈活、高效。skinse只用到了windows幾個底層的核心庫,沒有用到(mfc/atl等第三方庫),採用純api編寫,採用c語言匯出方式,增強可移植性,可以用於多種計算機語言。

skinse高階特性

1.skinse內部沒有完全採用hook攔截視窗的機制,主要採用子類化控制項,修改視窗過程函式的方式進行換膚。但是內建hook,可以動態設定hook,保證了skinse在整理構架上的靈活性。

2.skinse內建directui繪製思想,將介面繪製元素抽象成、文字、矩形區域、線條、動畫,並且內建eventitem、drawitem繪製機制。可以將這些繪製元素以及繪製機制組合開發,實現按鈕、單選框、核取方塊、分組框、tab控制項、動畫控制項等介面控制項。

3.skinse提供了非常豐富的api介面,最大限度的讓skinse介面庫更加透明化、個性化,讓skinse介面庫的使用範圍得到最大延伸。

4.skinse在子類化進行控制項換膚的時候,盡量不修改控制項的預設屬性,最大程度地相容window標準控制項的預設屬性。比如,目前市場上很多介面庫在繪製視窗標題欄的時候,去掉了視窗的ws_caption屬性, 導致getclientrect、getwindowrect方法失效,從而加大了介面開發和設計的難度,當然也導致不能完美支援sdi/mdi等介面框架。

5.skinse提供了介面控制項動態布局的特性。省去了程式開發中最為繁瑣的視窗控制項位置的調整。只需要調整一下xml配置屬性,就可以進行完美布局。

6.skinse支援bmp、ico、png、jpg等格式,支援**色調製換,提供skinse內部的影象引擎介面。

7.skinse支援sdi、mdi等介面框架,支援20餘種介面控制項,完整相容window 2000、window2003、window xp、vista、window7當前的主流作業系統。並且支援window平台的多種計算機語言開發。

AngularJS的自我理解

最近在學angularjs的框架開發,雖說到現在還只學到一半,但是我還是想把從開始到現在對angularjs的思路理解寫下,以便更好的回顧所學的知識。當然 後續的學習我也會在後面完善這一半的結果。以下是我自己最近所學的理解,當然理解走向有誤也希望有讀者能夠指出,菜雞在這裡先謝謝了!angularjs...

this物件的自我理解

函式中的this是存在,就看這個this被繫結到哪個物件了 當乙個函式用作建構函式時 使用new關鍵字 它的this被繫結到正在構造的新物件。建構函式這樣工作 function myconstructor function c var o new c var t new c console.log ...

指標的自我理解

指標 指標是乙個特殊的變數,它裡面儲存的數值是記憶體的乙個位址。1.指標的型別 指標的型別是指定義的指標變數的變數名去掉,剩下就是指標的型別如 1 int ptr 指標的型別是int 2 char ptr 指標的型別是char 3 int ptr 指標的型別是int 4 int ptr 3 指標的型...