利用ShareDevelop的ICSharpCode.Core實現了一個插件應用程序,這兩天想要弄個自動更新,將更新功 能作為插件包括在應用程序中,本來以為按照上面的思路是很容易實現的,也確實實現了部分,為什麼說部 分呢,因為主Exe文件沒有更新成功啦!想想原因其實也很簡單:主Exe本身就在運行,在運行階段的Exe或DLL 是沒法復蓋的.這下子,這可怎麼辦?這時一個想法冒出,先將主Exe進程殺掉,然後再復制不成嗎?咦,好象是 道理哦,自殺了之後,自然可以復制過來呀,但是轉念又想,如果主Exe自己都不存在,那後面的復制功能怎麼 才能執行呢?難不成因為不差錢,有錢能使鬼推磨,幫主Exe一把?
這世界當然是沒有鬼的,即使有,它也不可能這麼厲害的能幫到主Exe的,在座位上腦子裡想的總是自殺 再重生這個方案.Google,Baidu這些大神祭起半天也沒有找到好的解決方案,只好退下來.看來只有靠自己 自力更生,當然這個不一定行得通,但至少嘗試過了……
不就是復制嘛?就是copy呀,百無頭緒當中,我在cmd中(我一般是會開著cmd的), 無意識的敲著 copy/?,xcopy/?之類的查看,其中xcopy的幫助還真是提醒了我,請看下面:(繁體系統,粘貼過來的,所以沒 有轉換成簡體)
XCopyHelp
C:\>xcopy /?
復制檔案和樹狀目錄.
XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W]
[/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]
[/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] \r\r
[/EXCLUDE:file1[+file2][+file3]]
source 指定要復制的檔案.
destination 指定位置或者/以及新檔案的名稱.
/A 只復制設定成保存屬性的檔案,不要改變屬性的設定.
/M 只復制設定成保存屬性的檔案,並清除保存屬性.
/D:m-d-y 復制在指定日期當天或之後發生變更的檔案.如果沒有給日期,
只復制那些來源檔案日期比目的檔案日期為新的檔案.
/EXCLUDE:file1[+file2][+file3]
指定檔案清單字串.每個字串
應該在檔案中的不同行.如果有字串對應到要進行復制的檔案絕
對路徑的任何部分,這個檔案會被排除復制.例如,指定字串
\obj\ 或 .obj 的話,會排除所有在 obj 目錄下副檔名是
.obj 的檔案復制.
/P 在建立每個目的檔案時顯示提示.
/S 復制每個目錄及其包含的子目錄,不復制空目錄.
/E 復制每個目錄及其包含的子目錄,也復制空目錄./S 與 /E
相同,能夠用來修改 /T.
/V 驗證每個新檔案.
/W 在復制之前提示您按鍵繼續.
/C 如果錯誤發生時也繼續復制.
/I 如果目的不存在且復制一個以上的檔案的話,就假設指定的
目的一定是目錄.
/Q 在復制時不要顯示檔名.
/F 在復制時顯示來源及目的檔案的全部檔名.
/L 顯示要復制的檔案.
/G 允許加密檔案復制到不支援加密的
目的地.
/H 時復制隱藏檔和系統檔.
/R 覆蓋唯讀檔案.
/T 建立目錄結構,但不復制其中的檔案.不包括空目錄及子目錄.
/T /E 會包括空目錄及子目錄.
/U 只復制已經存在目的位置的檔案.
/K 復制檔案屬性.通常 Xcopy 會重設唯讀的屬性.
/N 用所產生的短檔名來進行復制.
/O 復制檔案所有權及 ACL 資訊.
/X 復制檔案審查設定 (包含 /O).
/Y 不要提示您確認是否要覆蓋一個已經存在的檔案.
/-Y 示您確認是否要覆蓋一個已經存在的檔案.
/Z 在可重新開始的模式中復制網路檔案.