2010年8月22日 星期日

Thinstall

Thinstall

作者:蔡學鏞

2004 年 9 月

軟體開發完畢,需要開始考慮到部署 (deployment) 的問題。部署往往不是一件簡單的事,有一些問題需要解決。早期,Java 尚未普及時,許多 Java 程式員都會面臨一個困擾,那就是:用 Java 開發出來的軟體,不保證可以在其他人的 PC 上執行,因為別人可能沒有安裝 JRE (Java Runtime Environment,Java 執行環境)。即使有安裝 JRE,JRE 的版本可能也不對。即使是現在,這個問題依然存在。

同樣地,.NET現在也遇到這個問題。目前,只有 Windows Server 2003 預先安裝好 .NET Framework,其他的作業系統都沒有預先安裝 .NET Framework。這會造成有些公司在評估開發工具時,會捨棄 .NET,而就 MFC,甚至回到 Win32 API,畢竟 MFC 和 Win32 的 DLL 在所有的 Windows 平台上都有。我常覺得這可稱為「舊技術不死,只是凋零」,凋零得還真慢呢!

如果讓安裝程式將 .NET Framework 附在其中,會造成一些問題:安裝 .NET Framework 時需要有足夠的權限,權限不夠則無法安裝。例如,Guest 帳戶無法存取 Registry,安裝 .NET Framework 需要存取 Registry。另外,體積也是一個大問題,.NET Framework 下載超過 20MB(安裝後超過100MB)。

幸好,有一些軟體廠商提供工具可以解決此問題,Thinstall 正是一個這樣的工具。在 .NET Framework 尚未普及的今日,這樣的工具更顯得重要。Thinstall 是 Jitit 公司的產品,你可以在 http://thinstall.com/ 找到它的資料,以及下載 30 天試用版。

顧名思義, Thinstall 是 Thin-Install 的意思,讓軟體免於安裝的困擾。利用 Thinstall ,可以將一個軟體的許多檔案包裝 (package) 成一個 EXE 檔,不需要解壓縮,不需要安裝 (install),就可以直接執行。利用 Thinstall ,你可以將 .NET Framework 和你的程式,以及相關的檔案都包裝在一起,變成一個自給自足的 EXE 檔。

除了將 .NET Framework 包裝進 EXE 之外,Thinstall 還有一些額外的好處,包括了:

* 可以將 3rd Party 程式庫,以及相關的檔案,都包裝在一個 EXE 檔中,讓程式執行時,不會有檔案遺失的狀況。
* Thinstall 使用的壓縮技術,壓縮比例可以比 ZIP 或 RAR 更高。
* Thinstall 並不會將整個 .NET Framework 都包裝進 EXE,只把有使用到的部分包裝進 EXE,加上使用壓縮技術,這使得包裝出來的程式體積不大,一般都在 3~8MB 之間。
* Thinstall 有使用加密技術,可以保障資料檔案不會輕易地被他人窺視與竄改,程式也更不容易被反編譯和反組譯。
* Thinstall 整合安裝程式的功能,可以建立開始選單 (Start Menu) 與桌面捷徑 (Desktop Shortcut)。
* Thinstall 可以讓軟體變成 30 天試用版 (Trial)。

使用 Thinstall 也不是全然沒有缺點,最明顯的缺點是,執行效率會或多或少受到影響,且浪費更多記憶體。我的經驗是,大多數的程式感覺不出效率變差,但某些用到特殊的技巧的程式,其效率的確變差了。另外,使用 Thinstall 時,必須考慮到法律的問題。因為 Thinstall 將許多程式庫都包裝進來,這些別人開發的程式庫 (包括.NET Framework) 是否可以隨著你的 EXE 而散播,Thinstall 的使用者需要好好研究其授權方式。

Thinstall 的使用方式非常容易,你可以在 Thinstall 的網站上看到用法介紹。較值得注意的是,Jitit 公司不希望 Thinstall 產品被不合法地盜用,所以對於 Thinstall 的保護相當嚴格。使用 Thinstall 時,電腦必須能上網,因為 Thinstall 需要連線到 License Server,來得知你是否為合法的用戶 (或試用戶),否則將不能執行 Thinstall。你也可以向他們購買 USB 的 Key,就可以不用上網,離線使用 Thinstall。

Thinstall 可以利用PE檔案格式的 Import Table,以及利用 .NET Metadata Table 內記錄的資訊,來得知此程式使用了哪些 DLL,Thinstall 會自動加入這些 DLL,甚至連間接使用到的 DLL (也就是 DLL 所使用的 DLL),也會被自動加入。但是,Thinstall 無法得知程式中利用 Win32 的 LoadLibrary() 或 .NET的Assembly.Load() 等API所動態載入的 DLL 有哪些,所以使用者必須自行將這些 DLL 加入到 Thinstall 中,以免包裝出來的 EXE 檔殘缺不全。

Thinstall 採用的機制相當巧妙,利用一個 Virtual OS 將程式和 OS 隔開來。如果你的程式是 .NET 程式,則在你的程式和 Virtual OS 之間,還有一個 .NET CLR,如圖 1 所示:
對 1
圖 1

如果你利用Thinstall來包裝.NET程式,那麼Thinstall所產生出來的 EXE檔內,除了包含你的原始EXE檔之外,還有.NET Framework,以及Thinstall Virtual OS,如圖2所示。
對 2
圖 2

Thinstall Virtual OS 重新改寫了 300+ 個 Win 32 API,這些 API 大都是和檔案、Registry、Process 等有關。Virtual OS 內有自己的 Virtual File System 和 Virtual Registry。這些被改寫的 API,將 Virtual File System 和 Real File System 整合起來,成為一個新的 File System;將 Virtual Registry 和 Real Registry 整合起來,變成一個新的 Registry。

當系統載入此 Thinstall 包裝出來的 EXE 時,Virtual OS 會先被載入,Virtual OS 會接著載入原始的 EXE (以及.NET Framework),然後解壓縮與解密、並該更改此 EXE(以及.NET Framework) 所使用到的這 300+ API,使其呼叫到 Virtual OS 的版本,而不是 Real OS 的版本。最後把執行權交給此 EXE。偷天換日的工作,於是完成!

因為 Thinstall 內部使用這套 Virtual OS 的機制,而不是針對 .NET 來設計一個專屬的機制,所以 Thinstall 除了用來包裝 .NET 程式,也可以用來包裝 Java 程式,甚至 VB,或其他程式。我覺得這是一套很方便的工具,值得您也試試。
意見與支援

您有任何問題、意見或建議嗎?您可以透過下列電子郵件與作者連絡:
xy.cai@msa.hinet.net
更多資訊

想知道大內高手專欄的其他文章嗎?請至此專欄所有列表

2010年1月8日 星期五

移除倉頡輸入法 / 完整移除 !!

移除倉頡輸入法 / 完整移除 !!
http://zimsam.wordpress.com/2007/07/13/delete/

前些日子更新 Windows 的一些重大更新,包含了 Office的一些更新

更新完之後,不曉得為什麼 ?

居然在切換輸入法的時候,發現了從沒出現過的倉頡輸入法 !

更過分的是居然刪也刪不掉,而且總是比新注音先跑出來 !!

簡直氣炸了 !!

接下來講解的完整移除方法,是當新增移除無解、輸入法內容也無法刪除的情況下

可以利用以下的方法進行刪除 ~

進入 桌面左下角開始 → 執行 → regedit

找出 [HKEY_CURRENT_USER\Keyboard Layout\Preload]

右半邊出現的機碼內,右鍵刪除 「e0090404」這個值

之後關閉視窗,並且立即重開機 ~

好啦 ! 煩死人的倉頡從此在你的電腦內消失 !

2009年11月27日 星期五

word 直書表格

http://office.microsoft.com/zh-tw/word/HA011945861028.aspx

表格的編輯

橫書文件中的表格轉成直式文件的版面時,表格會浮在直式文件的上方,或者跨越左邊界,要調整時還真的需要花點時間。
文件
較省力的表格編輯方式,請依下列步驟進行:
  1. 在橫書文件中先繪製好直式表格的外觀。
  2. 輸入所有的表格文字。文件
  3. 標示整張表格,按一下 [一般] 工具列中的 [變更文字方向] 按鈕 變更文字方向按鈕文件
  4. 調整儲存格高度及寬度。
  5. 將整份文件轉成直書版面。文件
  6. 調整表格位置。
對於已經編輯完成的橫式表格,請依上述 3~6 之步驟處理即可。

2009年10月15日 星期四

電腦接電視螢幕輸出




電腦S頭轉AV端子

2009年9月5日 星期六

虛擬記憶體設定

  • 不要設在disk c,設在 disk D
  • 起始大小:mem*1.5
  • 最大值:mem*2.5

2009年8月18日 星期二

電腦 主機板 基本故障排除

電腦 主機板 基本故障排除
http://dizunnbo.spaces.live.com/blog/cns!4FB8CB4332876896!756.entry


上週 維修一台電腦
開機無訊號
主機板檢測 無故障
重新裝上 CPU 顯示卡 記憶體 插上電源
開機 Speaker 嗶了三短音之後關機
但CPU風扇仍在慢轉

處理OK的方法
將主機板電池拔下 大約 3 分鐘之後 再裝上電池
開機 有訊號了 設定 BIOS 時間 之後 可以進 WINDOWS 了

但使用5分鐘之後 仍會當機 關機
似乎是CPU或是 主機板太熱
CPU散熱片積灰塵 散熱膏不良
一開機大約42度
當機前還看到53度

今天 2006 0510 做最後處理
先拆下 CPU 散熱片 刷洗乾淨
在 CPU 及散熱片 均勻塗上散熱膏
開機 OK
熱機 跑3D螢幕保護程式 及 需要解碼的DVD程式
跑個幾小時試試看
室溫是27度
一開機大約37度
跑程式提高到40度
連開一堆程式 最高到42度
主機殼的散熱風扇關掉 大約飆到45度
看樣子沒到53度
已經不會當了


[註] 研判故障原因
機器已經使用一 兩年
散熱膏失效 在 CPU 及散熱片之間形成間隙
CPU的熱能無法有效傳導至散熱片 熱傳導不良
所以出現 CPU過熱的當機情形
解決的方法是 重新塗佈均勻的散熱膏就OK囉

2009年8月15日 星期六

電腦無法開機--換了主機板

電腦無法開機--螢幕無訊號/音響無聲音
無法進入 biso,無法重灌

此時,應該檢查電容的屁股

這次換了主機板/cpu/2G ram

下次自己換電容