自己用VC來做自己的專業安裝程式 (轉)
由於上次的巨大損失,關於本篇的幾百字說明全部化為一片泡影。下次有時間我一定花時間來恢復,現在先只提供和預覽。:~~~(
嘻嘻:)我這人太懶了,同樣的事情最多隻能做一遍,要我多做一遍,簡直就是要偶的命,這不沒有辦法嗎!
縱觀(這個詞用得太大了吧:)所有見過的,除去一些常見的地板裡的安裝不過是簡單的對拷不談。最最專業的安裝程式要數我們所常見的InstallShield了,它擁有常用的大量對話方塊可供你選擇,並使用指令碼語言讓你像一樣來對的操作進行互動,熟練掌握了,可以任意定製你所想要的安裝程式,整個過程可以自己定義順序。(當然,我對它的瞭解實在是太少了)這麼說是想讓想做
自己安裝程式的同志們瞭解一下我們下一步該做的工作有哪些。我的這個安裝程式也是模仿InstallShield所製作的。
考慮到實現細節,首先是要繪製大量的對話方塊(這個好說),我用的方法是直接用一些可檢視EXE、DLL等擁有資源的程式(VC就可以了)。用它來開啟某一個InstallShield的安裝程式,直接COPY對話方塊資源到你的應用程式裡,然後修改一下你所想要修改的字串就可以了。接下來的是我們對各種使用的程度(一些簡單的如CButton、CStatic的我就不講了:),最後的也是最重要的,我大致分了這麼幾項,應該有:
1. 定製自己的控制元件。
一般是在現有控制元件的基礎上進行修改。
如CTreeCtrl裡實現Check,其實它有Check框的,可是太難看了。所以我想要定製一個。在CTreeCtrl裡用CImageList來繪製每一個Item的圖示。透過這樣我們就可以實現自己的Check框了。
CImageList *image;
image = new CImageList();
image->Create(13, 13, TRUE, 4, 4);
image->Add(AfxGetApp()->LoadIcon(IDI_NOT_CHECKED));// 沒有選中的ICON
image->Add(AfxGetApp()->LoadIcon(IDI_CHECKED)); // 全選中的ICON
image->Add(AfxGetApp()->LoadIcon(IDI_CHECKED_PART));// 只選中部分的ICON
m_tree.SetImageList(image, LVSIL_NORMAL);
接著用一個CUIntArray來記錄下每一個Item的狀態。當然,我們要從原來的CTreeCtrl中繼承一個新類CTreeCtrlEx,過載其InsertItem
方法。初始這個動態無符號整型陣列的狀態,這個值為0或1,表示選中和沒選中。剩下那個部分選中的ICON只是用來表示父項的狀態。
單獨的,下面再沒有子項的選項只有0或1兩種狀態。
然後每次 lClk 樹中的Item則首先改變對應狀態值,假設為uState,再用 m_tree.SetItemImage(hItem, uState, uState);
於是我們的目的就實現了。
2. 看到InstallShield(很多程式都有)這樣的一種“嚮導對話方塊”,它用上一步和下一步來對使用者進行引導。感覺十分得方便。
這是如何實現的呢?我在程式設計師大本營光碟中找到一個 CWizardDlg 嚮導對話方塊,使用非常地方便。具體使用見/Setup.zip">原始碼 936K 。
3. 對於使用者大量的設定資訊要進行儲存,方法要靈活。因為使用者可任意點選上一步和下一步來設定或修改安裝選項。這裡我用的是INI檔案。
大致幾個難點如上。我想看我這篇文章和下載的人可以
1.在現有基礎上作一定修改以做出適應自己所需的個人安裝程式
2.原始碼中有一些常用控制元件的使用方法,可以借鑑 。
文章和程式碼寫得都不是很好,請大家見諒!
上面寫的是原先做的程式,後來BOSS改變了主意,又重新寫一遍。下面是對新的安裝程式的介紹,很漂亮的。 原來的安裝程式不知道大家看過沒有,現在這個是經過美工處理後的最終版,很漂亮的哦:) 裡面相對於原來的做了很大的改動,無論是從花哨還是從穩定性上來說都做了很多的修改。很有看頭哦!裡面有一個DDE.CPP,是用來建立程式組的,很好用的。
不曉得大家做過反安裝的程式沒有,反正我原來沒有做過。為什麼特地把它單獨拿出來談呢,是因為有這麼一種特殊情況。一般反安裝程式,首先要看我們這個將要被反安裝的程式涉及到了哪些,如登錄檔、INI檔案、程式組等等(這些東東我們在反安裝時都要記得把它們恢復到安裝前的狀態)。其中還有一件必須要做的就是要把安裝上去的內容從使用者的上刪掉。為了刪除整個安裝的目錄,我們一般會用遞迴寫一個類似於原來DOS命令裡的 Deltree 的(用遞迴的原因是因為目錄下子目錄的存在)。
但是在安裝時,反安裝程式也應該在安裝的目錄下(比方說和主程式同一級目錄)。這時如果使用者要解除安裝程式,將出現一個錯誤,原因是我們這個反安裝程式要自己刪自己:) 而程式此時正在被。所以,不能簡單地這樣處理。:~~~(
到了最後,我想為了避免這個問題,要做一個標記,我的方法是在臨時資料夾裡生成一個檔案,首先看看臨時資料夾裡有沒有指定檔案。如果有,說明副本正在執行,沒有則先將自己copy一份到臨時資料夾裡,然後先副本,再將自己退出 。
在副本程式執行完解除安裝工作後,刪除標記(殺人滅口:)。 這樣就可以了,是不是很簡單?其實程式不光只是靠技術,想法也是很重要的!拿遊戲來說吧,<>不知大家玩過沒有,它就沒用什麼很高明的技術。 就在剛剛,我又知道了另一種更完美的方法用來在程式結束前刪除此程式的EXE檔案。摘自,具體內容請看我的一篇轉貼/develop/read_article.?id=4206">在PROCESS沒有結束前就將啟動PROCESS的EXE檔案刪除
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988581/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 讓自己強大起來 做自己世界的主人
- [應用案例]一個基金管理工具,做來自己用的
- 求助。。自己做的專案如何吸引到 HR
- Mac OS下用Homebrew安裝自己寫的開源工具Mac開源工具
- 腦洞大開!你來DIY自己的專屬VR裝置VR
- Python學習,給自己的程式碼做個合集,定製自己的桌面軟體!Python
- 六月,允許自己做自己,別人做別人
- 用commander做一個自己的eslint腳手架EsLint
- mysql在linux上cmake安裝方法(自己安裝版)MySqlLinux
- 用 yeoman 打造自己的專案腳手架
- 「模組化安裝」,定義你自己的CloudQueryCloud
- 使用CentOS 7.5解除安裝自帶jdk安裝自己的JDK1.8CentOSJDK
- 信任是自己掙來的
- 寫給未來的自己
- bat執行時自己隱藏黑框,而不是用vbs來呼叫自己BAT
- 在公司做的專案和自己在學校做的有什麼區別?
- python創意小作品程式碼-Python學習,給自己的程式碼做個合集,定製自己的桌面軟體!...Python
- 教你快速做一個自己的“ChatGPT”ChatGPT
- 程式設計師成長思維:把自己當做產品來發展程式設計師
- Fedora安裝phpMyAdmin(可能只有自己看得懂)PHP
- Linux系統安裝,教你安裝一個屬於自己的Linux系統Linux
- VC++ 6.0的安裝及使用C++
- 自己做一個ChatGPT微信小程式(程式碼開源)ChatGPT微信小程式
- 如何根據業務封裝自己的功能元件封裝元件
- 自己封裝的一些業務小元件封裝元件
- 實用的win10系統安裝教程,自己動手操作也能重新裝機Win10
- 來學著寫自己的“jQuery”jQuery
- 在自己的域名網站安裝Kubernetes並暴露服務網站
- 記錄自己 WIN7 系統 Homestead 安裝的坑Win7
- Nuget管理自己的專案庫
- UI很忙?那我自己做雪碧圖UI
- 從技術轉管理,我做了什麼來拯救自己?
- VI基本命令(呵呵,轉過來方便自己查閱)
- 《月圓之夜》製作人:小學時做自己的遊戲,如今在遊戲裡做一點自己遊戲
- 大模型的禾下乘涼夢,百度自己來做試驗田大模型
- 用Flutter的Canvas來自己繪製柱狀頻譜圖FlutterCanvas
- 手把手教你做一個自己的chrome擴充套件程式Chrome套件
- ubuntu18安裝開源genieacs並自己修改程式碼調測示例Ubuntu
- 如何做個自己想要的Window Server了?Server