用AUTOIT來管理升級分發公司設計圖框及字體庫

用AUTOIT來管理升級分發公司設計圖框及字體庫shell

筆者所在的公司隸屬製造業,想必你們第一反映就會想到CAD軟件,筆者所在的公司是個有"年頭"的公司,固然地,從CadR14,2000,2004,2006......一直到最新的2015,這些如繁星的CAD版本遍及公司各個專業部門及設計人員,由此帶來一系列的問題:
1.帶有公司LOGO及管理特點的圖框在公司歷年發展更新過程當中,不少已出現新舊圖框混用;
2.常常有用戶抱怨,打開DWG,因字體緣由亂碼啦;
3.公司明明正版化了某些版本,因盜版版本依舊存在,形成低版本打不開高版本DWG,有關圖框適配性也跟不上;
......服務器

如何造成一個機制向全體用戶分發?分發後,若升級變動了,如何向全體用戶分發更新的版本?傳統意義上靠行政發通知的形勢在一些小公司頗有效果?若在一些有多個辦公地點,部門衆多,用戶衆多複雜的環境裏呢?再加之這個行業常常性出差的員工佔必定比重,如何能確保及時地執行到位?就算行政通知執行力很強,當升級了三五個版本後,終端用戶有新入職的員工、在重作操做系統後、出差請假回到工做等後續工做中識別這幾版本的最新版,恐怕也是一個問題;ide

 

在這個事件中IT部門能作什麼?如何在不增長經濟成本的狀況下協助好有關部門的此項工做,好在筆者公司有域環境,雖無任何其它管理分發平臺,但藉助"AD+腳本"能夠有一個突破口:字體

進行任務分解:1.向全體用分發咱們自定義版本號的圖框和字體庫(也能夠精確到裝有CAD軟件的設計專業用戶才分發);2.圖框和字體庫的版本號管理,檢測到舊版本提示升級,檢測到新版版本就略過提示;3.向盜版CAD版本彈窗提示用戶(也能夠實現回傳檢測LOG,客戶端智能啓動其卸載等)操作系統

結合公司當下具體環境,若對客戶端盜版CAD彈窗及其啓動卸載會干擾業務運行,從用戶體驗的角度確定不可取,Leader說會在行政發文中明確這一點,讓各部門和項目組「自治」。那麼以上分解的三項任務只剩下兩項。設計

;示範腳本以下,若需進一步精肯定位,實現全自動識別CAD版本並複製替換也是可行的.......blog

#cs
Au3 版本: v3.3.9.21 (Beta)
腳本做者:boyhong
技術介紹: http://boyhong.blog.51cto.com
#ce
#NoTrayIcon
#include <Date.au3>
; 請置於程序頂部
$g_szVersion = "CheckCad"
If WinExists($g_szVersion) Then Exit ; 此程序已經運行了
AutoItWinSetTitle($g_szVersion)
Local $iniconfig = @ScriptDir & "\config.ini"
Local $Version = IniRead($iniconfig, "cad", "Version", "NotFound") ;從此升級這個配置文件中的版本號便可。好比:1.0 1.1....以此類推。
If $Version = "NotFound" Then Exit (MsgBox(14, "有誤:", "配置文件中[Version]讀取失敗."))
Local $readme = IniRead($iniconfig, "cad", "readme", "NotFound") ;彈窗的話語。
If $readme = "NotFound" Then Exit (MsgBox(14, "有誤:", "配置文件中[readme]讀取失敗."))
Local $file = IniRead($iniconfig, "cad", "file", "NotFound") ;可壓縮好包放置在某可訪問共享目錄下,好比:\\ip\JCT.ZIP 並手動修改好配置文件
If $file = "NotFound" Then
Exit (MsgBox(14, "有誤:", "配置文件中[file]讀取失敗."))
ElseIf FileExists($file) = 0 Then
Exit (MsgBox(14, "有誤:", "不能訪問的物理路徑:" & $file))
EndIf
Local $localiniconfig = @AppDataDir & "\" & @UserName & "JCTCAD.ini"
Local $localVersion = IniRead($localiniconfig, "cad", "Version", "")
If $Version <> $localVersion Then
$tmpname = "Update" & $Version & @YEAR & @MON & @MDAY & StringRight($file, 4) ;在用戶終端構造一個個性的文件名。
If FileCopy($file, @DesktopDir & "\" & $tmpname, 1) Then
Run('explorer /select, "' & @DesktopDir & "\" & $tmpname & '"')
If MsgBox(262144 + 1, "提示:", $readme & @LF & @LF & "相關文件已更新到桌面,點擊肯定,再也不提示.") = 1 Then
IniWrite($localiniconfig, "cad", "Version", $Version) ;將服務器上的版本號更新到本地來
IniWrite($localiniconfig, "cad", "time", _Now()) ;將更新時間寫到本地
EndIf
Else
SplashTextOn("Title", "拷貝更新失敗", 200, 50, -1, -1, 1)
Sleep(3000)
SplashOff()
EndIf
Else
SplashTextOn("Title", @UserName & "已於:" & IniRead($localiniconfig, "cad", "time", "NotFound") & "確認過更新.", 500, 50, -1, -1, 1)
Sleep(3000)
SplashOff()
EndIf
Exit

 

config.ini文件的示範內容:事件

[cad]
Version=1.0
readme=公司正在推動標準化的字體與圖框.請參照內帶的說明文檔進行更新.
file=\\172.16.128.25\kaba\temp\readme.rar

 

而後作一個域用戶開機啓動的GPO.VBS腳本:ip

On error resume next
wscript.sleep 4000
Set wshShell = CreateObject("Wscript.Shell")
strPath = wshShell.CurrentDirectory
wshshell.run \\IP\上邊生成的.exe

 

實施後,至少能夠獲得: 1.至關大的一個客戶端自動化更新率;2.管理升級維護易常方便,畢竟只需更新config.ini的內容來控制版本號及相關指向的壓縮包內容便可.與此同時,也獲得了公司領導的支持,向全體用戶發通知郵件在並相關信息系統上掛接瞭如上內容實現手動更新.  文檔

這樣,行政加技術進行了一次配合.自動推向用戶終端與用戶手動更新進行結合將此項工做更加深刻地執行了落實。

 

後注:上文提到了CAD版本的識別,而且相關圖框及字體進行直接安裝部署,免去用戶手動的過程,也是能夠輕鬆實現的,CAD安裝路徑和版本號經過註冊表有關鍵值來讀取.後續替換FONTS之類的小事就更不在話下了.如有困惑也可發郵件給我一塊兒研究.^-^

相關文章
相關標籤/搜索