2014年7月3日 星期四

Zip Components Investigation

前陣子研究了一下各家Zip元件的各方面比較,下面是整理過後的報告:
 

 

.NET ZipForge

Chilkat.NET Zip

DotNETZIP

Create self-extracting EXE up to 4GB

V

V

V

Custom SFX stub

V

X

V

Create a big ZIP size up to 10GB

V

V

V

License

Royalty free –

For 4 Developers

Royalty free –

A Site-Wide license is for any number of developers at a single company location

MS-GPL

Price

€699

http://www.componentace.com/order/

$249

Free

解決程式相容性問題-Program Compatibility Assistant

有時候結束程式會跳出一個Program Compatibility Assistant的視窗,雖然沒有任何功能性的問題但對Usability來說畢竟是有瑕疵。這問題發生的原因是因為在註冊區並沒有紀錄這個程式的安裝路徑,解決這個問題的方法有兩個,

  • 第一個可以透過修改app.manifest來達到,在compatibility的tag當中,加入這段{35138b9a-5d96-4fbd-8e2d-a2440225f93a}是windows 7的 ID,在manifest中加入此段的code可以避免PCA的視窗彈出。

clip_image001

  • 另一種比較苦工的做法, 是每一次在執行結束前後在以下註冊區(HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Persisted)加入自己的程式,如果使用script的寫法就是:
    • "`"reg add \`"HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Persisted`" /v `"%%S\your program location`" /t REG_DWORD /d 0x1 /f`"

但是這種寫法不好除錯也很難維護,使用manifest的管理是比較正確的做法

設計一個自動安裝程式(Installer)並且使用自解檔(self-extracting executable)的元件就會很容易發生上述的問題, 但是自解檔是透過外部ZIP元件而產生(舉例來說 .NET ZIP或ZipForge),這時候就可以使用 mt.exe 這個Tool來匯入manifest 到ZIP元件或是exe當中,mt的用法參考,以往必須要在Viual Studio裡面的build script當中寫入使用mt.exe 匯入到manifest,但是之後只需要在專案當中掛入mainifest就足夠了

讓程式執行時具有Admin權限

當沒有用Admin的權限來執行程式的時候, 有很可能會因為程式對File IO而產生例外,或是存取了需要權限的資料夾,以下的錯誤很容易發生 Access is Denied Exception,解決方法有兩種:
  • 第一種方式是在執行程式的時候按右鍵使用管理者權限執行,好處是不用對程式本身另外做任何處理;缺點也很明顯,就是每次都要手動執行這個步驟,對使用者來說Usability就打了折扣
  • 第二種是比較好的方法,在程式的專案中加入 "app.manifest"這個檔案,並且指定requestedExecutionLevel,為 "requireAdministrator",這樣一來,每次開始這個程式時,就會自動跳出用Admin執行的對話視窗
image

2014年7月2日 星期三

快樂生活

最近似乎又走到了對工作的倦怠期,會覺得做什麼都喪失了興趣,被這種負面情緒纏繞的長時間下會覺得很陰鬱,大概對工作常見的憂鬱症是這樣來的吧!會倦怠的原因之一是因為工作/生活上沒有目標。自己在生活中的觀察發現,會覺得快樂的原因是因為自己做的事情有價值,人追求的不僅僅是物質上的享受和生活的溫飽而已,追求價值是自我實現的道路之一,價值在生活中有許多的面向:

2014年6月23日 星期一

一個部落客的資格

我一直很佩服憑著熱情和興趣寫作不綴的部落客們,對我的部落格來說,從2008年到現今也六年了,我的部落格僅有60幾篇貼文,這些甚至不如一個勤於寫作的部落客兩個月的文章量。