질문과 답변
소프트웨어 설치 프로그램 자동화 관련 질문 드립니다.
2023.06.19 09:14
안녕하세요? 더운 날씨에 노고가 많으십니다.
현재 autoit 프로그램으로 프로그램 자동화를 어느정도 작업을 해두었습니다.
하지만 PC가 조금 느리거나 버벅이는 경우 지정해둔 시간이 지나면 프로그램 설치 진행이 되지 않아 이 부분에 약간의 고민이 있습니다.
좀 더 발전을 하고싶어 백그라운드 상태에서 설치 과정(다음, 동의 등등)을 전부 자동화 하여 완료되어 프로세서 종료되는 것 까지 하려합니다.
구글링을 해보고 여러가지 참고를 하며 NSIS라는 프로그램도 알게되어 시도를 했지만... 도무지 모르겠더라구요.
참고할만한 사이트나 예시 또는 더 좋은 프로그램이 있다면 알고싶습니다.
감사합니다.
의견입니다....... 참고만 하십시요...
설치자동화든 다른 부문이던지간에 각각의 프로세싱의 시간이 차이가 남니다.
즉 구형 컴퓨터와 신형 컴퓨터의 처리속도와 HDD SSD의 속도가 다르다보니 발생되는 일인듯합니다.
모자의 경우 *******wait 또는 sleep() 를 중간중간에 사용하여 적절한 시간을 조절하곤 합니다.
- ***wait 의 경우 프로세싱이 끝날때까지 메인창이 비활성되는데 기준은 작업관리자의 PID가 발생될때까지이므로
이보다 더 필요한 시간이 필요하다는 판단이라면 sleep()를 이용하여 유지지속시간을 늘려볼 수 있을듯합니다.
- 다른 방안도 물론 무수할 정도로 많겠지만 자신의 코딩 방향과 기획과 소기의 목적에 따라서 각기 다른 코딩을 하게 되므로
이것이 답이다 라는 말씀을 드리지는 못합니다.
그러나 참고가 될만하거나 시도해 볼만한 방법으로 답은 없지만 필적하여 봅니다.
좋은 결과가 있기를 함께 희망합니다... 꾸벅~~
#1
Dim $iMsgBoxAnswer
$iMsgBoxAnswer = MsgBox(262212,"확인","12324")
Select
Case $iMsgBoxAnswer = 6 ;Yes
; 사용자코드
Case $iMsgBoxAnswer = 7 ;No
; 사용자코드
EndSelect
#2
각 프로세서마다 @error 을 판단 또는 지정하여 연구개발자의 의도대로 진행이 되도록 오류값을 조절.
#3
프로그램마다 열리는 질문 또는 확인창의 건.
불가피 할 경우 키보드 키의 전송으로 제어도 가능합니다.
즉 모자의 경우 메시지 반자동 발송기의 예를 본다면
-> 쪽지보내기 창이 열린 후 창제목을 확인하기 위하여 열린창을 최상위로 임시 변경합니다.
-> 최상위창이므로 키의 입력은 직접적으로 창에서 동작을 합니다. ( 동작 기준점. )
-> 키의 누름으로 원하는 위치로의 이동값 또는 횟수를 기록하여 활용
-> 1차 목적이 도달 후 사용자 컨트롤 지정 (예: 제목항을 복사하여 쪽지보내기 창에 그대로 붙이기 ) 합니다.
이때 창의 포커스가 알맞게 변경되어야만 합니다.
결과적으로 쪽지보내기 창이 열리고 탭키를 두번누르면 제목에 커서가 대기상태가 됨니다.
이 상태에서 메인 프로그램에서 제목항을 클립보드로 복사한 후 창포커스를 이동시킨 후
쪽지보내기창의 제목란에 붙여넣기 ( ^ V : Ctrl + V ) 라는 키를 전송합니다.
이렇게하면 번거롭기는 하지만 정확하게 프로그램에서 선택한 제목이 쪽지보내기창의 제목란에
복붙이 정상적으로 이루어지게 됨니다. 즉 중요한 점은 창의 포커스를 꼭 필요한 싯점에서 이동해 두어야 편리합니다.
#4
프로그램 설치의 경우 해당 프로그램이 silent 옵션을 정상적으로 인식하여 동작을 한다면
이를 적극적으로 활용하되 이후의 옵션 -y 또는 -n ( : 모든 질문에 NO 아니오 를 선택하라는 명령옵션 ) 등
필요한 옵션을 인지하신 후 활용하시는 편이 가장 편리하고 안전한 방법인듯합니다.
#5
자동풀림 압축으로의 설치부문.........................
연구개발자가 자동풀림압축 또는 단일파일로의 제작 지원이 가능하다면 이를 메인 프로그램과 연동 활용도 고려사안이라고 사료됨.
#6
변수의 선언과 활용
전역인지 일부분인지의 결정과 이에 대한 선언을 우선하여 변동되는 값에 즉시 대응하도록
변수의 관리가 가장 중요하다고 사료됨니다.
내용을 확인하다보니 ( 내용 일부 )
; 전체를 5회 반복 - 필요에 따라 조정
$iLoop1 = 0
While $iLoop1 < 5
$iLoop1 += 1
라는 구문으로 프로세싱의 시간을 조절하시거나 카운트를 통한 조건을 생성하시는 듯 합니다.
제 경우에는
If @error = 0 Then
MsgBox(262208,"결과확인","정상실행이 되었습니다." & @error , 20)
ElseIF @error = 1 Then
MsgBox(262160,"경고알림","정상적이지 않습니다. 오류코드를 재확인하세요" & @error , 20)
Exit
Endif
라는 구문 또는 ConsoleWrite 를 통하여 매 분기점 또는 하나의 구문실행 후 반드시
오류코드를 확인하여 각기의 오류에 대해 다음의 진행을 점검합니다.
해당 샤나 인코더를 전혀 사용하지 않기에 알 수 없어 진행이 안되어 통상적인 경험의 일부를 기록남김니다.
답은 아님니다. 최고이거나 최선도 아님니다. 단지 지나가는 참고용 필적입니다.
평온하십시요,.............꾸벅~~