Ở một môi trường chuyên nghiệp và nhiều User và có thể lên đến 1000 User đặc biệt là các Công Ty Phần mềm đang phát triển như FPT Software hoặc giống công ty hiện tại của mình đang làm là Sutrix Solutions việc cài đặt PC cho User là điều hằng ngày, mình không thể cài tay từng PC được như vậy thì quá chậm, ví dụ hôm đó công ty bạn vô 10 User mới chả lẻ bạn phải thực hiện cài tay cho 10 User mới đó ? rồi bao giờ bạn mới cài xong ? nó quá tốn thời gian của bạn, điều đó khiến chính bản thân mình nghĩ ra một ý kiến tại sao không xây dựng PC Server Make App ???
Điều này nói ra nghe cũng giống như Ansible mà mình từng giới thiệu cho các bạn cách đây vài tuần trong một bài viết, bởi lẽ Ansible có thể phát triển trên cả 2 nền tảng Linux và Windows xem lại bài viết về Ansible tại đây nhé !
Nhưng ở đây mình không thực hiện bằng Ansible bởi lẽ mình có một cách hay hơn nhiều đó là sử dụng AutoIT để giải quyết vấn đề này thật ra có rất nhiều cách ngoài Ansible và AutoIT đó là Python hoặc một ngôn ngữ nào đó cũng được chỉ cần bạn am hiểu một chút về Code thì việc thực hiện quá dễ dàng dù là ngôn ngữ gì đi nữa, quay trở lại với bài viết của mình, mình dựng một PC có tên là IT-MakeApp sau đó Share thư mục như bình thường để cho các bạn IT làm chung công ty mình có thể truy cập được và thực hiện chạy Script khi mình phát hành, mình đã tạo rất nhiều đoạn code Auto rồi nhưng chưa có dịp viết bài nào về nó có hôm nay anh em IT bảo mình rằng, làm thêm Auto Install cho DotNet để đỡ hơn, bởi lẽ mình đã hoàn thành Install cho QC và FE rồi, nên sẵn tiện làm cho mấy bạn DotNet nên mình Upload Code luôn, AutoIT có thế mạnh là có thể biên dịch ra file exe để chạy trên hệ thống Windows đó là điều mình rất thích ở AutoIT ok bắt đầu thực hiện không cần nói dài dòng nữa, code mình đã code sẵn rồi, các bạn chỉ cần bỏ vào trình biên dịch của AutoIT và chạy thôi ở đây đoạn code:
RunWait("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe Mount-DiskImage -ImagePath ""\\it-makeapp\Soft\4-DotNet\1-SQLServer2016.iso""");Là đoạn code mình chạy lệnh PowerShell để Mount file ISO của SQL Server ra ổ đĩa E còn lại lệnh ShellExecute và Winwait, Winactive, Send, Controlclick là những lệnh mình sử dụng nhiều trong đoạn Script này giải thích về từng lệnh nhé thật ra trang chủ AutoIT sẻ giải thích rõ ràng hơn, nên mình sẻ nói sơ cho các bạn thôi, còn lại học trên đó giúp các bạn giỏi hơn, Script coi như mình đã Share sẵn cho các bạn rồi
- RunWait: Chạy lệnh trong hộp thoại run của Windows ví dụ cmd hoặc ipconfig ( mình giải thích theo cách dễ hiểu và đơn giản, chứ màu mè như trên mạng nhức đầu lắm)
- ShellExecute: Gọi file exe và mở file lên
- WinWait: Chờ đợi cho hộp thoại Setup.exe mở lên
- WinActivate: Chờ đợi cho hộp thoại Setup.exe chạy xong, ví dụ đang chạy với thanh Progressbar Controll đang chạy lệnh này sẻ chờ cho thanh đó chạy xong mới thực hiện lệnh tiếp theo
- Send: Để gửi 1 ký tự hay ký tự bàn phím key gì đó ví dụ Tab hoặc Ctrl v.v
- ControlClick: Lệnh chính trong việc thực hiện Auto Install đó là lựa chọn Button để click
- Sleep: Chờ đợi cho hoạt động kế tiếp diễn ra
RunWait("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe Mount-DiskImage -ImagePath ""\\it-makeapp\Soft\4-DotNet\1-SQLServer2016.iso"""); ShellExecute("E:\setup.exe") WinWait("SQL Server Installation Center","Hardware and Software Requirements") WinActivate("SQL Server Installation Center","Hardware and Software Requirements") Send("{CTRLDOWN}{TAB}{CTRLUP}") WinActivate("SQL Server Installation Center","New SQL Server stand-alone installation or add features to an existing installation") Send("{TAB}{ENTER}") WinWait("SQL Server 2016 Setup","Product Key") WinActivate("SQL Server 2016 Setup","Product Key") ControlClick("SQL Server 2016 Setup","Next","[CLASS:WindowsForms10.BUTTON.app.0.aec740_r6_ad1; INSTANCE:2]") Sleep(500) WinWait("SQL Server 2016 Setup","License Terms") WinActivate("SQL Server 2016 Setup","License Terms") Send("{SPACE}") ControlClick("SQL Server 2016 Setup","Next","[CLASS:WindowsForms10.BUTTON.app.0.aec740_r6_ad1; INSTANCE:2]") Sleep(500) WinWait("SQL Server 2016 Setup","Microsoft Update") WinActivate("SQL Server 2016 Setup","Microsoft Update") WinWaitActive("SQL Server 2016 Setup","Microsoft Update") ControlClick("SQL Server 2016 Setup","Next","[CLASS:WindowsForms10.BUTTON.app.0.aec740_r6_ad1; INSTANCE:2]") Sleep(500) WinWait("SQL Server 2016 Setup","Install Rules") WinActivate("SQL Server 2016 Setup","Install Rules") WinWaitActive("SQL Server 2016 Setup","Install Rules") ControlClick("SQL Server 2016 Setup","Next","[CLASS:WindowsForms10.BUTTON.app.0.aec740_r6_ad1; INSTANCE:2]") Sleep(500) WinWait("SQL Server 2016 Setup","Feature Selection") WinActivate("SQL Server 2016 Setup","Feature Selection") ControlClick("SQL Server 2016 Setup","Next","[CLASS:WindowsForms10.BUTTON.app.0.aec740_r6_ad1; INSTANCE:6]") Sleep(500) WinWait("SQL Server 2016 Setup","Feature Selection") WinActivate("SQL Server 2016 Setup","Feature Selection") ControlClick("SQL Server 2016 Setup","Next","[CLASS:WindowsForms10.BUTTON.app.0.aec740_r6_ad1; INSTANCE:2]") Sleep(500) WinWait("SQL Server 2016 Setup","Instance Configuration") WinActivate("SQL Server 2016 Setup","Instance Configuration") ControlClick("SQL Server 2016 Setup","Next","[CLASS:WindowsForms10.BUTTON.app.0.aec740_r6_ad1; INSTANCE:2]") Sleep(500) WinWait("SQL Server 2016 Setup","PolyBase Configuration") WinActivate("SQL Server 2016 Setup","PolyBase Configuration") ControlClick("SQL Server 2016 Setup","Next","[CLASS:WindowsForms10.BUTTON.app.0.aec740_r6_ad1; INSTANCE:2]") Sleep(500) WinWait("SQL Server 2016 Setup","Server Configuration") WinActivate("SQL Server 2016 Setup","Server Configuration") ControlClick("SQL Server 2016 Setup","Next","[CLASS:WindowsForms10.BUTTON.app.0.aec740_r6_ad1; INSTANCE:2]") Sleep(500) WinWait("SQL Server 2016 Setup","Database Engine Configuration") WinActivate("SQL Server 2016 Setup","Database Engine Configuration") Send("{TAB}{TAB}{TAB}{SPACE}{TAB}") Send("1234@abcd{TAB}") Send("1234@abcd") Sleep(500) WinWait("SQL Server 2016 Setup","Database Engine Configuration") WinActivate("SQL Server 2016 Setup","Database Engine Configuration") ControlClick("SQL Server 2016 Setup","Next","[CLASS:WindowsForms10.BUTTON.app.0.aec740_r6_ad1; INSTANCE:4]") Sleep(500) WinWait("SQL Server 2016 Setup","Database Engine Configuration") WinActivate("SQL Server 2016 Setup","Database Engine Configuration") ControlClick("SQL Server 2016 Setup","Next","[CLASS:WindowsForms10.BUTTON.app.0.aec740_r6_ad1; INSTANCE:2]") Sleep(500) WinWait("SQL Server 2016 Setup","Analysis Services Configuration") WinActivate("SQL Server 2016 Setup","Analysis Services Configuration") ControlClick("SQL Server 2016 Setup","Next","[CLASS:WindowsForms10.BUTTON.app.0.aec740_r6_ad1; INSTANCE:4]") Sleep(500) WinWait("SQL Server 2016 Setup","Analysis Services Configuration") WinActivate("SQL Server 2016 Setup","Analysis Services Configuration") ControlClick("SQL Server 2016 Setup","Next","[CLASS:WindowsForms10.BUTTON.app.0.aec740_r6_ad1; INSTANCE:2]") Sleep(500) WinWait("SQL Server 2016 Setup","Reporting Services Configuration") WinActivate("SQL Server 2016 Setup","Reporting Services Configuration") ControlClick("SQL Server 2016 Setup","Next","[CLASS:WindowsForms10.BUTTON.app.0.aec740_r6_ad1; INSTANCE:2]") Sleep(500) WinWait("SQL Server 2016 Setup","Distributed Replay Controller") WinActivate("SQL Server 2016 Setup","Distributed Replay Controller") ControlClick("SQL Server 2016 Setup","Next","[CLASS:WindowsForms10.BUTTON.app.0.aec740_r6_ad1; INSTANCE:4]") Sleep(500) WinWait("SQL Server 2016 Setup","Distributed Replay Controller") WinActivate("SQL Server 2016 Setup","Distributed Replay Controller") ControlClick("SQL Server 2016 Setup","Next","[CLASS:WindowsForms10.BUTTON.app.0.aec740_r6_ad1; INSTANCE:2]") Sleep(1000) WinWait("SQL Server 2016 Setup","Distributed Replay Client") WinActivate("SQL Server 2016 Setup","Distributed Replay Client") ControlClick("SQL Server 2016 Setup","Next","[CLASS:WindowsForms10.BUTTON.app.0.aec740_r6_ad1; INSTANCE:2]") Sleep(500) WinWait("SQL Server 2016 Setup","Consent to install Microsoft R Open") WinActivate("SQL Server 2016 Setup","Consent to install Microsoft R Open") ControlClick("SQL Server 2016 Setup","Next","[CLASS:WindowsForms10.BUTTON.app.0.aec740_r6_ad1; INSTANCE:4]") Sleep(1000) WinWaitActive("SQL Server 2016 Setup","Consent to install Microsoft R Open") ControlClick("SQL Server 2016 Setup","Consent to install Microsoft R Open","[CLASS:WindowsForms10.BUTTON.app.0.aec740_r6_ad1; INSTANCE:2]") Sleep(500) WinWait("SQL Server 2016 Setup","Ready to Install") WinActivate("SQL Server 2016 Setup","Ready to Install") WinWaitActive("SQL Server 2016 Setup","Ready to Install") Sleep(500) ControlClick("SQL Server 2016 Setup","Ready to Install","[CLASS:WindowsForms10.BUTTON.app.0.aec740_r6_ad1; INSTANCE:2]")Video:
Ok mình đã giới thiệu cho các bạn và chia sẻ Code Auto Install SQL Server 2019 bằng AutoIT rồi đấy, chúc các bạn thành công đừng ngại để lại bình luận khi bạn không hiểu hoặc không thực hiện được ở bước nào nhé, các bài sau mình sẻ hướng dẫn Auto Install cái khác.
Nguồn: itblognote.com
0 Comments
Vài lời muốn nói:
* Không được nhận xét thô tục bởi mình biết các bạn là những người văn minh.
* Pass giải nén mặt định là itblognote hoặc itblognote.com nếu có Pass khác thì mình sẽ ghim trong bài viết.
* Click vào quảng cáo và chia sẻ bài viết để mình có thêm động lực viết bài nhé.