사용자 정의 맵을 배포하는 추가 기능으로, JMP의 두 번째 인스턴스가 닫히면 맵이 제거됩니다.JMP 추가 기능을 통해 사용자 지정 맵을 배포하려고 합니다. JMP를 시작할 때(시작 스크립트 사용) 추가 기능 디렉터리의 맵 파일을 사용자 지정 맵 디렉터리로 복사하고, 종료 스크립트를 통해 JMP를 닫을 때 삭제하는 추가 기능을 만들었습니다. 하지만 JMP 인스턴스를 여러 개 열었을 때(때로는 실수로) 하나가 닫히면 문제가 발생합니다. 두 번째 JMP 인스턴스를 닫으면 종료 스크립트가 실행되어 사용자 지정 맵 폴더의 맵이 삭제됩니다. 그래프를 다시 추가하려면 JMP를 완전히 닫았다가(모든 인스턴스를 닫은 후) 다시 열어야 합니다.
애드인이 제거될 때만 종료 스크립트를 실행하고, JMP가 종료될 때는 실행하지 않도록 하는 방법이 있을까요? 아니면 사용자 지정 맵을 배포하는 더 좋은 방법이 있을까요?
시작 스크립트:
Names Default To Here( 1 );
//Create Custom Map Path
homePath = Convert File Path( "$HOME", absolute );//get home path
mapPath = Substr( homePath, 1, Length( homePath ) - Length( Word( -1, homePath, "/\" ) ) - 1 ) || "Maps/";
//Create map path if it doesn't exits
If( !Directory Exists( mapPath ),
Create Directory( mapPath )
);
//copy files from addin map folder to JMP map folder
mapFiles = Files In Directory( "$ADDIN_HOME(com.hp.G5iTools)" || "/Maps" );
For( i = 1, i <= N Items( mapFiles ), i++,
newMapFilePath = "$ADDIN_HOME(com.hp.G5iTools)" || "/Maps/" || mapFiles[i];
If( !File Exists( mapPath || mapFiles[i] ),
Copy File( newMapFilePath, mapPath || mapFiles[i] )
);
);
종료 스크립트:
Names Default To Here( 1 );
//delete map files
homePath = Convert File Path( "$HOME", absolute );//get home path
mapPath = Substr( homePath, 1, Length( homePath ) - Length( Word( -1, homePath, "/\" ) ) - 1 ) || "Maps/";
mapFiles = Files In Directory( "$ADDIN_HOME(com.hp.G5iTools)" || "/Maps" );
For( i = 1, i <= N Items( mapFiles ), i++,
Delete File( mapPath || mapFiles[i] )
);
기본 데이터 분석 및 모델링데이터 액세스윈도우Re: 사용자 정의 맵을 배포하는 추가 기능, JMP의 두 번째 인스턴스가 닫히면 맵이 제거됩니다.안녕하세요 @RM2241 ,
JMP가 여러 개 열려 있다고 하셨는데, '홈 화면'이 여러 개 열려 있는 경우를 말씀하시는 건가요, 아니면 플랫폼만 여러 개 열려 있는 경우를 말씀하시는 건가요? 플랫폼이 여러 개 열려 있는 경우라면 알려진 버그입니다(자세한 내용은 여기를 참조하세요).
닫을 때 사용자 지정 맵 파일을 삭제해야 하는 이유는 무엇인가요? 스크립트에서 새 인스턴스를 생성할 때 맵 파일이 이미 존재하는지 확인하고 해당 파일을 사용하도록 하는 것이 좋을까요?
감사해요,
벤
Re: 사용자 정의 맵을 배포하는 추가 기능, JMP의 두 번째 인스턴스가 닫히면 맵이 제거됩니다.새로운 인스턴스란 여러 개의 홈 화면을 말합니다.
닫을 때 사용자 지정 맵을 삭제할 필요는 없습니다. 사실 닫을 때 삭제되는 것을 원하지 않습니다. 하지만 애드인이 제거되고 종료 스크립트가 삭제 방법을 알아낼 수 있는 유일한 방법이라면 삭제되었으면 합니다.
Re: 사용자 정의 맵을 배포하는 추가 기능, JMP의 두 번째 인스턴스가 닫히면 맵이 제거됩니다.안녕하세요 @RM2241 ,
애드인 내에 '제거' 버튼을 추가해 주시면, 사용자가 제거 전에 해당 스크립트를 실행할 수 있도록 할 수 있을까요? 여러 인스턴스(홈 화면)가 있는 경우, 아래 링크를 참고하여 해결해 보는 것이 좋겠습니다. 애드인에서 제거가 발생하는 시점을 실시간으로 추적할 수 있는 방법은 없는 것 같습니다.
감사해요,
벤
Re: 사용자 정의 맵을 배포하는 추가 기능, JMP의 두 번째 인스턴스가 닫히면 맵이 제거됩니다.추가 기능이 여전히 존재하는지 확인하는 동안 종료 스크립트를 사용할 수 있습니다.
예:
com.mycompany.myaddin을 ID로 하여 애드인을 생성합니다.

어떻게든 추가 기능이 일부 파일을 생성하도록 했습니다(시작 스크립트를 사용했습니다)

그리고 종료 스크립트에서 Get Addin + << ID + Try-catch를 사용하여 추가 기능을 확인합니다.

Names Default To Here(1);
Try(
Get Addin("com.mycompany.myaddin") << id
, // if this fails add-in has been removed
Delete File("$DOCUMENTS/test.txt");
);
이제 JMP를 닫으면 파일이 그대로 남아 있어야 하지만 보기 메뉴에서 추가 기능을 제거하면 파일이 제거됩니다(적어도 제 경우에는 그랬습니다).