setupdll在CAB安裝過程中的一些處理方法

2021-05-12 10:24:18 字數 1009 閱讀 4043

一)獲取螢幕解析度

在cab安裝過程中,可以利用setupdll來做一些初始化的工作,極大的方便了我們的開發。

但是在setupdll中使用getsystemmetrics函式

獲取螢幕解析度的時候,出現了問題。640x480的解析度取出來成了320x240,800x480成了400x240...真是奇了怪了。

原因也解釋不清楚了,據說setupdll是被wceload.exe所載入的,而wceloade.exe沒有能力去獲取解析度...

不管了,只好另外做一exe程式,來被setupdll呼叫。

在install_exit中加入:

process_information info;

createprocess(l"//program files//getmetricstest.exe", null, null, null, null, 0, null, null, null, &info);

waitforsingleobject(info.hprocess, infinite);//等待程序結束

getmetricstest.exe程式用於獲取螢幕解析度,可將獲得的引數儲存在登錄檔或臨時檔案中,再由setupdll來處理這些引數。

二)獲取安裝包名稱

在cab安裝過程中,一般會出現「正在安裝某某.cab...」字樣,取得「正在安裝」和「.cab」之間的值就達到我們的目的了。

首先利用setupdll是必須的,然後在install_exit來做動作,此時會傳入hwndparent引數,利用這個引數來折騰一下:

tchar scabname[256];

hwnd hdlg = getwindow( hwndparent, gw_child|gw_hwndfirst );

uint uctrlid = getdlgctrlid( hdlg );

getdlgitemtext( hwndparent, uctrlid, scabname, 256);

scabname正是"某某.cab..."或"某某.cab..."。

Redis在windows下安裝過程

二 安裝redis zip形式 2 啟動命令 redis server redis.windows.conf,出現下圖顯示表示啟動成功了。如果報錯 redis啟動出錯creating server tcp listening socket 127.0.0.1 6379 bind no error 參...

Redis在windows下安裝過程

二 安裝redis 2 啟動命令 redis server redis.windows.conf,出現下圖顯示表示啟動成功了。三 設定redis服務 1 由於上面雖然啟動了redis,但是只要一關閉cmd視窗,redis就會消失。所以要把redis設定成windows下的服務。也就是設定到這裡,首先...

Redis在windows下安裝過程

二 安裝redis 2 啟動命令 redis server redis.windows.conf,出現下圖顯示表示啟動成功了。三 設定redis服務 1 由於上面雖然啟動了redis,但是只要一關閉cmd視窗,redis就會消失。所以要把redis設定成windows下的服務。也就是設定到這裡,首先...