2011年8月8日 星期一

@CASE 5 < update 程式 > ver.20110808


'在win7上安裝測試以後
大致上主程式可以執行

但是更新程式會出問題
不斷呼叫主程式
並且關閉更新程式

第一次測試
要再查查看

可能是全縣問題
========================================
'需要將一些報表更新檔案也一併寫入更新程式中
讓他能夠自動更新


'應該要在思考遺下整個流程
感覺會有點問題

在目前尚未寫入自我更新的 更新程式
要去過渡到有自我更新的版本上面

反應會有更新問題
似乎問題出在剛建立玩noupdate檔案
主程式偵測到並且去殺掉太快的樣子
會說更新程式還在佔用NoUpdate資源

如何避免这个新建文件并写信息出错

目前透過 IO.File.Create().close去釋放資源
然後改掉msgbox()提示關閉主程式訊息

'應該改掉取消更新時
將主程式關閉
更新程式關閉

而不要等待再問

======================================
'目前改以P曹更新
並且放置更新版本檔案判斷

應該可以放置版本更新資訊
更新時撈出資料
顯示相關更新資訊

@直接開更新可以
透過主程式開更新
檔案一直無法覆蓋

猜測是 PROCE尚未完全關閉
所以檔案無法搬移覆蓋

=========================================
初步上完成

'想一下怎麼編碼

'進一步處理版本更新的動作(exe替換 , 安裝新套件, setup重新安裝)

'直接開Update時,與透過主程式開啟Update
應該要各做些什麼事

'怎麼包裝兩個不同專案的兩隻程式在一個安裝檔
自動安裝兩隻程式

目前想到是說,分開部屬
然後把update執行檔,拉進去主程式去部屬

有點怪,拉進去部署以後
關閉主程式

猜測是關閉 主程式會需要一點時間,
如果說弄一個迴圈來確定該程式已經關閉以後
才往下走
或許可以解決

Process.WaitForExit 方法

設定要等待相關的處理序結束的時間,並且阻止目前的執行緒執行,直到等候時間耗盡或者處理序已經結束為止。



那就要看專案到底部署的時候
需要那些檔案,那些不必
pdb, vshost.exe, manifest, config
===================================================
在殺掉目錄下的主程式時
發生了例外

大概知道說是因為我的主程式並沒有關掉的原因
要關掉介面視窗執行緒

1. 要先 closeMainWindows (關介面執行緒)
2. 在關掉 執行緒 close (真正關掉執行緒)
====================================================
希望透過抓取 Process 唯一識別的 ID (Integer) 去做關閉動作


                    '關掉所有執行中 MRP - App 程式
                    Dim myProc As Process
                    Dim allProc() As Process

                    '所有開啟的 ERP外掛
                    allProc = Process.GetProcessesByName("MRP - App")
                    For i = 0 To UBound(allProc)
                        MsgBox("識別碼 : " & allProc(i).Id & ",名稱 : " & allProc(i).MainModule.FileName)

                        myProc = Process.GetProcessById(allProc(i).Id)
                        myProc.Close()
                    Next




获取进程PID


======================================================
需要寫一隻程式
可以幫目前主程式做更新動作

'更新動作第一次都會失敗,
然後再提示一次是否關閉主程式更新

有點怪

'更新完成以後,確定檔案以置換
 但是呼叫主程式的動作有問題
看起來像是不斷呼叫,然後不斷關閉又呼叫

應該是我更新程式再呼叫主程式,以及關閉自己那邊有點什麼問題

'如果更新程式以跳出(主程式並存時)
 不關閉主程式執行更新
 更新程式會 Sleep 一段時間
 再次提示關閉主程式

此時應該將 Update Form 縮至最小
或是透過背景執行等動作
(目前 Sleep , Update 程式將鎖死, Form 也不能重繪)

'開發後與目前上線版本會不一樣
開發後的最新版本,
在使用時,怎麼判斷開發者才是最新版本問題

'下載更新檔完成後,
 怎麼執行更新檔?

1.下載就直接覆蓋(下載前一定要確定主程式關閉)
2.下載以後,移動檔案去覆蓋(下載以後,等確認主程式關閉,就可以移動檔案覆蓋)

完成以後

呼叫主程式
關閉 Update 程式

移動檔案
http://program.maomo.info/article.aspx?uid=63


VS.NET在程序中关闭其他运行的程序



如何程式內關閉透過System.Diagnostics.Process.Start開啟的程式
http://www.blueshop.com.tw/board/show.asp?subcde=BRD20100719133145ERC&fumcde=FUM20050124192253INM


Process.Close 方法


============================================
主程式
每次開啟檢查版本(本機版本 是否等於 資料庫所存最新版本)
透過一個版本檢查檔

主程式下
需要一個上傳系統版更程式的介面 (管理員權限)

UpDate程式
當需要更新,
1. 建立 UpDate 資料夾 (暫存)
2. 連資料庫下載新版本程式(exe or setup),到 UpDate 資料夾
3. 檢查下載檔案大小 是否與資料庫內存相同 ( 相同則下載完畢 )
4. (無窮迴圈檢查) 關閉主程式,安裝更新,並建立新的檢察檔



    '1.建立 Update 暫存資料夾
    '2.下載新版更新檔
    '3.當資料庫撈資料完成,檢查檔案大小,是否與資料庫內存相同
    '4.確定下載完成,詢問是否關閉主程式,
    '5.確認關閉主程式後,執行update
    '6.訊息提示


====================================================
要稍微查一夏
怎麼把兩個專案下的不同程式包成一個安裝檔
還是說兩個程式要放在同一個專案建置

有什麼不同

要怎麼包要在查察
====================================================
Windows Installer (MSI)


使用vs2005製作安裝檔,若執行檔需更新,如何重新製作



[VS2005]安裝時移除舊版程式

沒有留言:

張貼留言