Feeds:
文章
留言

Archive for 八月 25th, 2009

在“ClickOnce 心得”文章中我層提到可透過 Process.Start 來驅動需要系統管理權限的程式,其實這個作法有很多其他用途,我第一個想到的就是將電腦中小型可透過 Copy 方式來佈署的程式製作成 ClickOnce ,這樣我到任何一台電腦只要簡單的 Click 一下就可以執行我要得程式,很不錯吧 ^^

作法也很簡單,如果只是把 ClickOnce 當作一個載入器,可在 Main 程式中加入下述程式碼

String fn = Path.Combine(Application.StartupPath, "Everything-1.2.1.371.exe");
Process proc = new Process();
ProcessStartInfo si = new ProcessStartInfo(fn);
si.UseShellExecute = true;
proc.StartInfo = si;
proc.Start();
Application.Exit();

當 ClickOnce 程式啟動後就會驅動指定程式,如果需要系統管理者權限,就會出現 UAC 視窗,如下 Windows 7 的提示

image

允許之後,程式就會執行,覺得挺不錯的吧 ^^

image

透過這個方式,我可以統一在一個地方升級程式,任何地方我只要執行就可以執行最新的程式而不用手動更新,超讚的

找個時間把我電腦常用的可攜軟體封裝一下,如果可以去除安裝 .NET Fx 就更方便了~

 

測試網址:http://cwchiu.chuiwenchiu.tu2.ru/portable/publish.html

Read Full Post »

在“ClickOnce 心得”文章中我層提到可透過 Process.Start 來驅動需要系統管理權限的程式,其實這個作法有很多其他用途,我第一個想到的就是將電腦中小型可透過 Copy 方式來佈署的程式製作成 ClickOnce ,這樣我到任何一台電腦只要簡單的 Click 一下就可以執行我要得程式,很不錯吧 ^^

作法也很簡單,如果只是把 ClickOnce 當作一個載入器,可在 Main 程式中加入下述程式碼

String fn = Path.Combine(Application.StartupPath, "Everything-1.2.1.371.exe");
Process proc = new Process();
ProcessStartInfo si = new ProcessStartInfo(fn);
si.UseShellExecute = true;
proc.StartInfo = si;
proc.Start();
Application.Exit();

當 ClickOnce 程式啟動後就會驅動指定程式,如果需要系統管理者權限,就會出現 UAC 視窗,如下 Windows 7 的提示

image

允許之後,程式就會執行,覺得挺不錯的吧 ^^

image

如果可以去除安裝 .NET Fx 就更方便了~

Read Full Post »

ClickOnce 心得

最近開發一個小工具,因為工具簡單、檔案也不大也不需要特別系統權限,嘗試使用 ClickOnce 方式進行佈署,真的是相當便利,只要簡單的發布,使用者就可以在啟動時取得最新的版本。

不過開發上仍遇到一個困擾很久的問題,因為我的開發環境是 VS2008 繁體中文環境,如果用戶端電腦沒有 .NET Fx 時,安裝程式會自動下載安裝真是很便利,不過這個工具是要給日本客戶使用,因此安裝 .NET Fx 應該要使用日文語系套件,可是內建於 VS2008 的只有繁體中文套件。解法方法有兩個,其一[1]是手動代換內建繁體中文的 eula 成日文版本,可從 dotnetfx.exe 中取得,其二是透過自訂轉散發套件,自訂一個日文語系版本。

另外以前我一直認為 ClickOnce 無法存取檔案和登錄檔,這次剛好把微軟論壇與 ClickOnce 相關的討論看過一遍,發現其實有辦法在 ClickOnce 程式存取系統檔案。作法就是將需要較高權限的程式獨立到 ClickOnce 程式之外,並在該程式 manifest 設定需要管理者權限,然後透過附加檔案方式將相關檔案加入 ClickOnce 程式,ClickOnce 則透過 Process.Start( ) 方式驅動需要管理者權限的程式,因此在 Vista 或 Windows 7 等環境會詢問使用者賦予較高的權限來執行,如果允許就可以進行檔案和登錄檔的存取。

還有 Firefox 也可透過安裝Microsoft .NET Framework Assistant 1.1 支援 ClickOnce。目前我在 Firefox 3.5.2 測試可行。

ClickOnce 雖然好用,缺點也不是沒有,如IE6支援的不是很好,檔案太大我覺得也不適用。不過他還是有很多應用的地方,希望 Microsoft 未來能夠持續改善。

測試用 ClickOnce 程式(檔案、登錄檔讀寫)
展示頁面

參考資料
[1] http://tlcheng.spaces.live.com/blog/cns!145419920BFD55A7!4185.entry

Read Full Post »