추가 기능 관리자설명
추가 기능 관리자 추가 기능 파일을 쉽게 빌드 및 다시 빌드하고, 시간 경과에 따른 추가 기능 버전을 관리하고, 소스 파일에 직접 액세스하고, 추가 기능에 대한 추가 사용자 지정을 할 수 있습니다. 이제 버전 2.0 추가 기능 관리자 , 이제 추가 기능을 사용자에게 직접 배포할 수 있으므로 전체 JSL 애플리케이션 개발 수명 주기를 제어할 수 있습니다. 추가 기능 관리자 !
추가 기능을 빠르게 구축
의 근본적인 특징 추가 기능 관리자 소스 파일에서 직접 JMP 추가 기능 파일을 빌드하는 기능입니다. 이 기능은 처음에 내 사용자 정의 추가 기능 빌더 추가 기능 및 추가 기능 관리자 는 해당 추가 기능의 기본을 취하고 개선했습니다.

사용자에게 추가 기능 배포
버전 2.0으로 추가 기능 관리자 , 이제 에서 직접 사용자에게 추가 기능을 배포(또는 푸시)할 수 있습니다. 추가 기능 관리자 . 사용자가 추가 기능을 테스트할 수 있도록 TEST 위치에 배포할 수 있으며 PROD 위치에도 배포할 수 있습니다.

PROD에 배포할 때 연관 배열이 있는 JSL 스크립트는 최신 게시 날짜/시간으로 자동 업데이트됩니다. 이 연관 배열은 사용자 추가 기능의 빌드 날짜를 연관 배열에 따라 빌드 날짜와 비교할 수 있는 자동 생성된 'updateCheck.jsl' 스크립트에서 사용할 수 있습니다. 최신 버전의 추가 기능을 사용할 수 있는 경우 사용자는 최신 버전으로 업데이트하도록 선택할 수 있는 다음 창이 표시됩니다. 업데이트를 확인하기 위해 연관 배열을 사용하는 이 개념은 @brady_brady 게시 날짜가 있는 테이블을 사용하는 의 방법입니다. 이 방법은 에 설명되어 있습니다. @Jeff_Perkinson 님의 게시물 자동 업데이트 JMP 추가 기능을 작성하는 방법 .

추가 기능 버전 관리
추가 기능 관리자 새 파일이 빌드될 때마다 추가 기능 파일의 버전 기록을 자동으로 유지하는 기능이 있습니다. 이전 버전의 추가 기능을 설치, 복원 또는 삭제할 수 있습니다. 선택적으로 각 빌드에 대한 설명을 포함하여 각 버전에 적용된 변경 사항을 추적할 수 있습니다.

추가 애드인 사용자 지정 만들기
추가 기능 관리자 이전에는 XML을 수동으로 변경해야 했던 몇 가지 추가 기능을 사용자 지정할 수 있습니다. 다음은 에서 사용할 수 있는 추가 사용자 정의입니다. 추가 기능 관리자 .
- 최대 JMP 버전
- 메뉴 항목에 대한 내장 JMP 아이콘
- 메뉴 항목의 위치를 지정하기 위해 위치 앞에 삽입
- 사용자 지정 메뉴 모음 - 자신만의 메뉴를 만들거나 "추가 기능"이 아닌 기존 메뉴 사용
- 새로운 추가 기능 관리자 2.0: 단일 추가 기능 내 여러 기본 메뉴

JMP에서 직접 소스 파일 액세스
내 파일 탭에서 추가 기능 관리자 , 테이블에서 원하는 파일을 두 번 클릭하여 JMP에서 직접 소스 폴더의 파일을 열 수 있습니다.

커스텀 메타데이터의 자동 관리
와 함께 추가 기능 관리자 버전 2.0에서는 자동으로 포함되고 관리되는 메타데이터 외에 사용자 지정 메타데이터를 생성할 수 있습니다. 추가 기능 관리자 .

이전에 설치된 추가 기능 관리
설치됨 탭에서 설치된 추가 기능을 활성화, 비활성화 또는 등록하고 설치되지 않은 추가 기능을 등록할 수 있습니다.

시스템 요구 사항
이 추가 기능은 JMP 13 이상이 설치된 Windows 및 Mac 운영 체제에서 지원됩니다.
블로그 시리즈
추가 기능 관리자, 1부: JMP 추가 기능 정의 및 빌드
추가 기능 관리자, 파트 2: 사용자에게 자동 업데이트 추가 기능 배포
추가 기능 관리자, 3부: 고급 사용자 지정
변경 로그
버전 1.1-1.3(2017년 10월 16일)
- 추가 기능에서 오류가 발생하는 몇 가지 경우를 수정했습니다.
- 메뉴와 도구 모음의 표시 여부를 제어하기 위한 새로운 기본 설정이 추가되었습니다.
버전 2.0(2017년 11월 22일)
- TEST 및 PROD 위치에 추가 기능 배포에 대한 지원이 추가되었습니다.
- 스크립트에 포함될 수 있는 연관 배열을 통해 사용자 지정 메타데이터에 대한 지원이 추가되었습니다.
- 단일 추가 기능에 여러 기본 메뉴를 포함할 수 있는 기능이 추가되었습니다.
- 메뉴 항목 트리에서 메뉴 항목을 복사하여 붙여넣는 기능이 추가되었습니다.
- 기존 'jmpaddin' 파일에서 소스 폴더를 설정하기 위한 지원이 추가되었습니다.
- JMP 커뮤니티에서 직접 가져온 새 버전을 확인하는 기능이 추가되었습니다.
- 빌드 후 애드인을 자동으로 설치하는 기본 설정이 추가되었습니다.
- 여러 가지 이유로 한 번에 여러 추가 기능을 빌드하는 지원을 제거했습니다.
- 기타 다양한 버그를 제거했습니다.
버전 2.1(2018년 2월 26일)
- 보이지 않는 파일 및 폴더(예: 마침표로 시작하는 파일/폴더)를 제외하는 기본 설정이 추가되었습니다. 이것은 Git과 같은 버전 제어 시스템을 사용하는 경우에 유용합니다.
- 이제 최신 버전이 설치되어 있는지 확인할 때 customMetadata.jsl 파일이 무시됩니다.
버전 2.2(2018년 3월 8일)
- 2개 이상의 최상위 메인 메뉴를 추가할 때 발생하는 문제를 수정했습니다.
- 선택 화면에 새로운 아이콘을 추가했습니다. 하나의 OS에서만 사용할 수 있는 아이콘을 제거했습니다.
버전 2.3(2018년 4월 6일)
- 소스 폴더의 이름을 바꾸거나 삭제할 때 Mac에서 발생하는 오류 수정
- 이제 컴퓨터에 Consolas 글꼴이 설치되어 있지 않아도 기본 설정 창이 작동합니다.
버전 2.4(2020년 1월 9일)
- 뒤에만 삽입을 허용하는 대신 다른 항목 앞이나 뒤에 메뉴 항목을 삽입할 수 있습니다.
- 최소/최대 JMP 버전 번호로 15 및 16을 추가합니다.
버전 2.5(2020년 2월 5일)
- JMP 15에서 macOS 다크 모드 및 Windows 고대비 모드를 사용할 때 가독성이 향상되었습니다.
- Mac에서 환경설정을 열 때 표시되는 경고 수정.
버전 2.6(2020년 6월 4일)
- 사용자 정의 메뉴로 추가 기능을 구문 분석하는 버그가 수정되었습니다.
- 향후 문제에 도움이 되도록 구문 분석 오류에 대한 진단 정보를 추가했습니다.
버전 2.7(2020년 6월 10일)
- JMP 16 EA의 임시 버그에 대한 해결 방법 추가
버전 2.8(2020년 9월 24일)
- 하위 폴더가 있는 애드인 압축 해제 문제 수정
- 추가 기능 템플릿을 사용할 때 자동으로 폴더를 생성하는 옵션이 추가되었습니다(기본적으로 켜져 있음).
버전 2.9(2021년 2월 4일)
- 일부 날짜 형식을 로케일 형식으로 변경했습니다.
- 업데이트 확인 기능 수정
버전 3.0(2022년 1월 18일)
- XML 특수 문자(예: '&')는 더 이상 addin.jmpcust 파일을 손상시키지 않습니다.
버전 3.1(2022년 3월 4일)
- 추가 기능을 보관할 때 일부 로케일의 날짜 형식 경고를 수정했습니다.
문제를 발견하면 알려주세요!
현재 버전=3.1
2.9
추가 기능 관리자를 사용하면 추가 기능 파일을 쉽게 빌드 및 재구축하고, 시간 경과에 따른 추가 기능 버전을 관리하고, 소스 파일에 직접 액세스하고, 추가 기능에 대한 추가 사용자 지정을 수행하고, 추가 기능을 다음에 배포할 수 있습니다. 당신의 사용자.

유용Re: 추가 기능 관리자@저스틴_칠튼 JMP17은 JMP16이 메뉴 항목을 표시하는 내 추가 기능에 대해 빈 메뉴 구조를 표시합니다. 세 가지 애드인 모두 동일합니다. 2021년 9월 14일에 내 이전 메시지를 참조하십시오.

Re: 추가 기능 관리자@Justin_Chilton , @nathan-clark 드디어 TEST Addin 자동 업데이트 기능으로 돌아오겠습니다. 추가 기능 관리자가 TEST 설정을 위한 메타데이터 폴더를 작성하지 않는다는 점을 제외하고는 정상적으로 실행되었다고 생각합니다.
이것을 활성화할 기회가 있습니까? 그렇지 않으면 오류가 발생하기 쉬운 매번 이러한 파일을 수동으로 업데이트해야 합니다.
헤닝
Re: 추가 기능 관리자안녕 @저스틴_칠튼
질문글을 올린 후 여러가지 시도를 하다가 업계 내부 보안 시스템에 의해 파일이 훼손된 것이 아닌가 하는 의심이 들었습니다.
외부에서 파일을 받아서 재설치를 진행하니 정상적으로 설치가 되었습니다.

나는 같은 경우에 대한 질문과 답변을 보관할 것입니다.
항상 감사합니다, 저스틴
데이브_류.
Re: 추가 기능 관리자안녕 @저스틴_칠튼
Add-In Manager를 사용하여 빌드하는 데 많은 도움을 받고 있습니다.
v2.9까지는 잘 사용하고 있었는데 재설치 시 아래와 같은 에러가 납니다.
이 오류는 v2.9와 v3.1의 최신 버전에서 모두 발생합니다.
설치파일을 실행하면 바로 에러가 발생하고 진행이 되지 않습니다.
오류에 대해 조치를 취하는 방법을 알려주실 수 있습니까?

감사합니다.
데이브_류.
Re: 추가 기능 관리자안녕 @저스틴_칠튼 , TEST 폴더에 배포할 때 아래 오류가 발생했습니다. 그렇지 않으면 추가 기능에 감사드립니다! 이것은 JMP의 표준 기능이어야 했습니다. 
에러 메시지:
{"argument must be character"(1, 2, "Concat", Bad Argument(currentAddinInfo["Name"]), "" || /*###*/currentAddinInfo[" 이름"] || /*###*/" 추가 기능입니다." /*###*/)}
오류: 인수는 문자여야 합니다.
1번.
유형: 오류
함수 이름: Concat
잘못된 인수: currentAddinInfo["이름"]
실행 중인 기능: "업데이트된 정보를 저장하지 않았습니다." || /*###*/currentAddinInfo["이름"] || /*###*/" 추가 기능." /*###*/
호출 스택:
saveButtonCheck
새로 고침 추가 테이블 상자
배포 선택
Re: 추가 기능 관리자@저스틴_칠튼 제안에 감사드립니다. 내가 원하는 것이 include()로 처리될 수 있다는 것이 맞습니다.<
내 zip이 작동하지 않는 이유는 확실하지 않지만 Mac에서 하고 있었고 수동 시도 후에 모든 항목이 사라졌습니다.이제 포함 작업을 수행했으므로 어쨌든 수동으로 편집할 필요가 없습니다.
Re: 추가 기능 관리자@steveylin , 단순히 추가 기능 내용을 압축하고 xxx.jmpaddin으로 이름을 변경하면 작동해야 합니다. jmpcust 및 def 파일이 jmpaddin zip 파일의 루트에 있는지 확인하기만 하면 됩니다.
또는 경로를 사용하여 스크립트를 직접 사용하는 대신 "JSL 실행"에 대한 include()로 경로를 추가하는 것이 좋습니다. 이렇게 하면 jmpcust 파일을 수동으로 편집할 필요가 없습니다. 경로가 작동하지 않는 이유는 확실하지 않지만 이것이 제가 실제로 추가 기능에 사용하는 설정입니다.

추가 기능의 여러 인스턴스가 서로의 기호를 덮어쓰지 않도록 추가 기능에 대해 <<새 컨텍스트를 추가 기능에 사용하는 것을 좋아합니다.
Re: 추가 기능 관리자저는 애드인을 작동시키려는 초보자입니다.디렉토리를 참조하여 작동하도록 했지만 기본값은 "텍스트"이며 수동으로 "경로"로 변경해야 합니다.
<동작 유형="<FONT" color="#0000FF"> "길" >$ADDIN_HOME(com.cirrus.pejmpscriptsMac)\pe-jmp-scripts\Check_Duplicate_Measurements.jsl
내가 가진 문제는 .jmpcust를 수정하여 내 컴퓨터에서 작동하도록 할 수 있지만 내보낼 수 없다는 것입니다.addin.def/addin.jmpcust를 가져와서 직접 압축하는 쉬운 방법이 있습니까?나는 그것이 쉬운 일이고 추가 기능 관리자를 사용할 필요가 없기를 바랍니다.
zip을 사용하고 이름을 바꾸려고 시도했지만 작동하지 않았습니다.
문안 인사,
스티브
Re: 추가 기능 관리자안녕 @저스틴_칠튼 , 최근에 새 Prod 버전을 배포할 때 이 오류가 발생했습니다.
에러 메시지:
{"argument must be character"(1, 2, "Concat", Bad Argument(currentAddinInfo["Name"]), "" || /*###*/currentAddinInfo[" 이름"] || /*###*/" 추가 기능입니다." /*###*/)}
오류: 인수는 문자여야 합니다.
1번.
유형: 오류
함수 이름: Concat
잘못된 인수: currentAddinInfo["이름"]
실행 중인 기능: "업데이트된 정보를 저장하지 않았습니다." || /*###*/currentAddinInfo["이름"] || /*###*/" 추가 기능." /*###*/
호출 스택:
saveButtonCheck
새로 고침 추가 테이블 상자
배포 선택
Re: 추가 기능 관리자안녕 나단,
예, 먼저 빌드했고 오류가 발생하지 않았습니다. 하지만 어쨌든 배포 메시지를 받습니다.
남자
Re: 추가 기능 관리자@Gido_vanderStar ,
저와 다른 로케일을 사용 중이신 것 같습니다. 이로 인해 알 수 없는 형식 오류가 발생합니다. 방금 추가 기능(v3.1)을 업데이트하여 보관 프로세스 중에 사용된 날짜 형식이 사용자 로케일의 날짜 형식을 따르도록 했습니다.
Re: 추가 기능 관리자@john_madden 빌드 버튼을 먼저 클릭하셨나요? 저장 아이콘 옆에 있는 버튼입니다. 그러면 애드인이 빌드되어 개발 폴더에 저장됩니다.
그런 다음 DEV를 설치할 수 있습니다. 또는 추가 기능의 TEST 또는 PROD 빌드를 배포할 수 있습니다. (TEST 또는 PROD 추가 기능을 설치하기 전에 TEST 또는 PROD 추가 기능을 배포해야 합니다.
Re: 추가 기능 관리자안녕하세요 저스틴입니다.
내 추가 기능(AIM이 제대로 빌드됨)을 설치하려고 하면 "DEV/TEST/PROD 추가 기능이 없습니다"라는 오류가 발생합니다. 내가 뭘 잘못 할 수 있니?
남자
AIM 3.0, JMP 프로 EA 17.0b6, OS X 12.2.1
Re: 추가 기능 관리자안녕 @저스틴_칠튼 ,
이 플러그인에 감사드립니다. 단지 하나의 성가심을 신고하고 싶었습니다. 추가 기능을 설치하거나 배포할 때 로그에 다음 메시지가 약 50회 표시됩니다.
Unknown format: m/d/y h:m
JMP 16.0.0, Windows10에서 최신(v3.0) 버전의 추가 기능 사용.
Re: 추가 기능 관리자@vohwinkelh0 나는 Justin의 자동 업데이트 코드를 수집했고, 당신이 말하는 것을 허용하기 위해 몇 가지 업데이트를 하는 것은 꽤 쉬울 것이라고 생각합니다.
통합 방법에 따라 로컬 코드를 사용하여 업데이트를 수행할 수 있습니다. 그대로 코드에는 기본적으로 설치된 버전이 PROD인지 확인한 다음 새 빌드를 확인하는 단계가 있습니다. 설치된 버전이 PROD 또는 TEST인 경우 프로세스를 수행할 수 있고 배포 영역 메타데이터를 확인하여 최신 PROD 빌드가 있는지 확인할 수 있다고 생각합니다.
대역폭이 열릴 때까지 요구 사항을 충족하기 위해 조사할 수 있는 항목일 수 있습니다. 
Re: 추가 기능 관리자@pauldeen , 신고해 주셔서 감사합니다! v3.0에서 수정되어야 합니다.
Re: 추가 기능 관리자@vohwinkelh0 , 추가 기능 관리자의 기능에 대한 좋은 아이디어처럼 들립니다. 일종의 별도의 TEST(또는 베타) 버전 관리가 필요한 것 같습니까? 불행히도 저는 현재 그러한 것을 구현할 수 있는 대역폭이 없지만 일부 사용자 지정 메타데이터 필드를 추가하고 코드에서 이를 사용하여 테스트 빌드인지 여부를 알 수 있다고 확신합니다.
Re: 추가 기능 관리자@저스틴_칠튼 툴팁 필드에 &를 입력하면 addin.jmpcust에 쓸 때 오작동을 일으켜 더 이상 구문 분석할 수 없게 됩니다. (JMP 16.1 Windows 10).
Re: 추가 기능 관리자@저스틴_칠튼 TEST에서도 자동 업데이트 기능을 구현하는 방법이 있는지 아시나요? 기능을 테스트하기 위해 사용자에게 TEST를 배포한다는 사실을 자주 발견하지만, TEST Addin이 새 PROD 버전이 있는지 여부를 자동으로 확인하지 않기 때문에 PROD 업데이트가 배포되면 해당 업데이트가 배포되지 않습니다.
Re: 추가 기능 관리자감사 @pauldeen ! addinLoad.jsl 기능을 사용할 수 있는지 몰랐습니다(가이드에 숨겨져 있음). 그 솔루션은 내 문제에 효과가 있습니다!
Re: 추가 기능 관리자@Djtjhin 사용자 정의 기능이 포함된 addinLoad.jsl을 사용하여 모든 컴퓨터에 빈 추가 기능을 배포할 수 있습니다.
또는
IT 부서를 사용하여 설명된 대로 사용자 정의 기능이 포함된 jmpStartAdmin.jsl 파일의 역할을 지정할 수 있습니다. 여기 , 추가 기능이 필요하지 않습니다.
Re: 추가 기능 관리자여기요 @저스틴_칠튼 , 추가 기능 관리자를 사용하여 시작 시 이상적으로 실행되는 사용자 정의 사용자 정의 기능을 배포하려고 합니다. 추가 기능 관리자를 사용하여 이 작업을 수행하는 가장 좋은 방법을 추천해 주시겠습니까?
Re: 추가 기능 관리자@저스틴_칠튼 JMP17EA2는 로그에 오류가 없는 빈 메뉴 구조를 다시 표시합니다. 이 추가 기능 덕분에 JMP에 직접 통합되어야 합니다!
Re: 추가 기능 관리자@Justin_Chilton @MikeD_Anderson
응답에 감사드립니다! 나는 실제로 요전날 그렇게 할 수 있는 능력을 우연히 발견했지만 여기에 게시하도록 나를 때렸습니다.
@MikeD_Anderson - 빠른 JMP 시작에 대한 정보는 정말 좋은 정보입니다. 앱 스크립트가 확실히 커지기 시작했기 때문에 많은 도움이 되었습니다.
추가 기능 관리자로 달성하고자 했던 것 중 일부는 무언가를 테스트하고 싶을 때마다 .jmpappsource를 .jsl 또는 .jmpapp으로 내보내야 하는 단계를 건너뛰는 것이었습니다. 그래서 결국은 아래 코드가 되었습니다. . 어떻게 작동하는지 잘 모르겠지만 OpenFile()을 사용할 때 .jmpappsource가 앱 빌더를 시작하지 않고 앱을 직접 실행할 수 있습니다. 내가 필요했던 바로 그것!
app = JMPApp();
app << OpenFile("$ADDIN_HOME(com.example.addin)\MyApp.jmpappsource");
app << Run;Re: 추가 기능 관리자@mringqui & @Justin_Chilton - Justin이 언급한 방법에 대한 약간의 색상 설명입니다. 먼저 jmp 앱 소스 파일을 .jmpapp 파일로 컴파일해야 합니다. 이것은 애플리케이션 빌더에 있을 때 파일 > 내보내기에서 수행할 수 있습니다. 그런 다음 추가 기능 패키지에 .jmpapp 파일을 포함하고 .jmpapp 파일을 엽니다.
open("$ADDIN_HOME(com.example.me.myaddin)/MyApp.jmpapp");
JMP 기본 추가 기능 마법사의 모습입니다.

이것은 JSL을 직접 임베딩하는 것보다 몇 가지 좋은 효과가 있습니다. 가장 큰 것은 정말 큰 앱의 경우 시작 시 JMP가 느려지는 것을 막을 수 있다는 것입니다. 모든 코드는 시작 시 구문 분석되어야 합니다. 따라서 스크립트가 정말 크거나 많은 스크립트가 있는 경우 작업이 느려질 수 있습니다. STK에 문제가 있었습니다. 앱으로 임베딩한다는 것은 JMP가 시작 시 한 줄의 코드만 구문 분석하면 된다는 것을 의미합니다. 다른 것들도 있지만 그것이 가장 중요한 IMO입니다.
Re: 추가 기능 관리자@mringqui , 문의해 주셔서 감사합니다. 추가 기능 관리자 추가 기능을 약간 변경해야 한다고 생각했지만 @MikeD_Anderson 추가 기능 관리자가 이미 작동하는 방식으로 이 작업을 수행하는 방법을 보여주었습니다.
실행할 파일을 설정하는 대신 JMP 앱 소스 파일을 실행하는 스크립트를 사용하십시오. "Run this JSL"에 대한 텍스트 상자에 이것을 붙여넣기만 하면 됩니다.
Include("$ADDIN_HOME(com.example.me.myaddin)/MyApp.jmpappsource");</CODE></PRE></LINGO-BODY><LINGO-SUB id="lingo-sub-394777" slang="en-US">Re: 추가 기능 관리자</LINGO-SUB><LINGO-BODY id="lingo-body-394777" slang="en-US"><P>안녕, 잘했어! 메뉴 항목에 대한 "이 파일에서 JSL 실행" 작업으로 .jmpappsource 파일을 사용하는 추가 기능을 만들고 싶습니다. 이것은 쉽게 추가할 수 있는 것입니까? 지금 당장은 .jsl 파일을 강제로 사용하는 것이 애드인 관리자를 편리한 방식으로 사용하는 능력을 제한하고 있습니다. 감사!</P></LINGO-BODY><LINGO-SUB id="lingo-sub-386516" slang="en-US">Re: 추가 기능 관리자</LINGO-SUB><LINGO-BODY id="lingo-body-386516" slang="en-US"><P><A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/1855" target="_blank">@저스틴_칠튼</A><BR /> 포함해야 하는 위치/방법에 따라 $ADDIN_HOME 및 Get Default Directory() 조합을 사용합니다. 그리고 많은 포함에 대해 많은 도구에 공통적인 라이브러리 세트가 있으며 이들을 완전히 별도의 추가 기능으로 취급합니다. 그러면 내가 만드는 모든 도구에는 $ADDIN_HOME의 파일이 포함되며 모든 라이브러리 기능은 나 또는 이를 사용하려는 다른 사람이 사용할 수 있습니다.<BR /><BR /> 왜 그런지 모르겠다<A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/2173" target="_blank"> @tsl</A> 지퍼에 추가 레이어를 추가해야 합니다. 내 관점에서 볼 때 그의 첫 번째 계층 구조에 있는 조직과 매우 유사하게 두면 전반적으로 작업이 더 단순해 지지만 해당 인프라의 모든 세부 사항을 알지 못하기 때문에 내가 놓치고 있는 것이 있을 수 있습니다.<BR /> 일반적으로 원래 항목이 설정되면 .jmpcust 파일에 대해 수행해야 하는 유일한 업데이트는 버전 업데이트의 표시 이름을 업데이트하는 것입니다(내 저장소에서 수행하지만 추가 기능 관리자에서 수행할 수 있음).</P></LINGO-BODY><LINGO-SUB id="lingo-sub-386499" slang="en-US">Re: 추가 기능 관리자</LINGO-SUB><LINGO-BODY id="lingo-body-386499" slang="en-US"><P>설명 감사합니다<A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/2173" target="_blank"> @tsl</A> . 귀하의 프로세스를 약간 변경하면 작동할 수 있을 것 같습니다.</P>
<OL>
<LI>$ADDIN_HOME 폴더를 변경하지 말고, 대신 상대 경로와 Get Default Directory()를 사용하십시오. 또한 해당 참조는 설치된 버전에 대한 것이므로 추가 기능을 개발하기가 더 쉽습니다.</LI>
<LI>변수를 사용하여 CommonFiles의 상대 경로 위치를 결정하고 이를 포함에 사용하십시오. 위치는 프로덕션 추가 기능과 개발 리포지토리 간에 다르기 때문입니다.</LI>
</OL>
<P>또는 CommonFiles를 각 추가 기능에 복사하는 아이디어를 모두 함께 스크랩할 수 있습니다. CommonFiles에 대한 별도의 추가 기능 항목을 만들 수 있으며(명령 항목이 없음) 사용자가 추가 기능 외에 추가 기능을 설치하도록 요구할 수 있습니다. 이는 사용자에 대한 CommonFiles 사본이 하나만 있음을 의미합니다(CommonFiles를 업데이트한 후 모든 추가 기능을 테스트하는 빈도에 따라 좋은 것이 될 수도 있고 나쁜 것이 될 수도 있습니다. 이를 통해 $Addin_Home 경로 변수를 사용하여 파일을 포함할 수 있지만 여전히 개발 단계에서 파일을 포함하는 방법을 파악해야 합니다. 이것은 무엇과 비슷할 수 있습니다.<A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/6649" target="_blank"> @nathan-clark</A> 하고 있지만 확실하지 않습니다.</P>
<P>또 다른 대안은 내가 당신을 위해 카피를 구현하는 대신(누군가 제한적), 당신이 정의할 수 있는 매우 유연한 후처리 스크립트를 구현하면 됩니다. 예를 들어 ZipArchive를 참조하는 함수를 정의하고 원하는 대로 조작할 수 있습니다. 이 솔루션은 아마도 당신과 내가 가장 적게 변경해야 할 것입니다.</P>
<P>모든 말장난에 대해 유감스럽게 생각하지만 이러한 제안 중 하나가 우리를 올바른 방향으로 인도하기를 바랍니다!</P></LINGO-BODY><LINGO-SUB id="lingo-sub-386453" slang="en-US">Re: 추가 기능 관리자</LINGO-SUB><LINGO-BODY id="lingo-body-386453" slang="en-US"><P><A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/1855" target="_blank">@Justin_Chilton</A> , 예, 당신은 내가하는 일에 매우 가까운 것을 설명하고 있습니다. Addin Manager를 사용하면 어떻게 되는지 보여주면서 조금 더 자세히 설명하겠습니다. (그리고 나는 여전히 그것이 어떻게 작동하는지 탐구하고 배우고 있으므로 그것이 할 수 있는 일을 잘못 표현했다면 용서해 주세요! )</P><P> </P><P>소스 폴더가 Addin_1\Source가 되도록 하는 추가 기능을 빌드한 후 Addin_1\Release 폴더에 Addin_1.jmpaddin이라고 하는 파일이 있습니다.</P><P>이름을 .zip 확장자로 변경하고 열어서 살펴봅니다. 나는 그것이 다음과 같이 보인다는 것을 알았다.</P><P> </P><P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><span class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><img src="https://us.v-cdn.net/6038925/uploads/images/32932i1AD28B843A933FC3/Addin_Initial_Folder_Structure.png" role="button" title="Addin_Initial_Folder_Structure.png" alt="Addin_Initial_Folder_Structure.png" /></span></SPAN></P><P> </P><P>(몇 가지를 관리하는 데 사용하는 XML 파일도 몇 개 있지만 단순성을 위해 건너뛸 수 있습니다.)</P><P>그런 다음 .zip 내에 새 폴더를 만들고 모든 Source_1 등의 파일을 새 하위 폴더로 끌어서 수동으로 zip을 변경합니다. addin.jmpcust와 add.def를 루트 수준에 두었습니다. 그렇지 않으면 추가 기능이 설치되지 않기 때문입니다. 또한 CustomMetaData.jsl이 있어야 할 위치라고 추측하기 때문에 루트 수준에 그대로 둡니다.</P><P>그런 다음 필요한 .zip CommonFiles 폴더로 드래그합니다. 내 최종 Zip 구조는 다음과 같습니다.</P><P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><span class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><img src="https://us.v-cdn.net/6038925/uploads/images/32933i3C14631B2CA97BE7/Addin_Final_Folder_Structure.png" role="button" title="Addin_Final_Folder_Structure.png" alt="Addin_Final_Folder_Structure.png" /></span></SPAN></P><P>그런 다음 한 가지 더 해야 할 일이 있습니다. .jmpcust 파일의 <ACTION type=""path""> 행을 지금 편집해야 합니다. 라고 하는 반면</ACTION></P><P>$ADDIN_HOME(com.xyz)\Source_1\Code_1.jsl</P><P>읽을려면 바꿔야지</P><P>$ADDIN_HOME(com.xyz)\Addin_1\Source_1\Code_1.jsl</P><P>텍스트 편집기에서 검색/바꾸기를 사용하여 수행할 수 있는 작업입니다.</P><P>이 모든 단계가 완료되면 추가 기능을 배포하고 설치할 수 있으며 모두 작동합니다.</P><P> </P><P>마지막으로 이 추가 기능은 도구 모음이기 때문에 Addin_1 내에 고유한 "Source" 하위 폴더가 있으므로 CommonFiles를 참조하기 위해 Code_1.jsl 등의 Include() 문에는 추가 기능이 있습니다. "..\"는 포함 파일을 올바르게 찾기 위해 한 단계 더 위로 이동합니다.</P><P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-385991" slang="en-US">Re: 추가 기능 관리자</LINGO-SUB><LINGO-BODY id="lingo-body-385991" slang="en-US"><P><A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/2173" target="_blank">@tsl</A><BR /> 나는 Subversion과 비슷한 작업을 수행하고 Addin 관리자를 사용하여 Repo 활동을 게시합니다. 모든 코드가 커밋되면 추가 기능의 "소스"가 되는 위치(로컬 또는 네트워크 폴더)로 내보냅니다. 개인적으로 .jmpcust 파일과 .def 파일을 저장소에서 관리하여 내보내기도 하지만 Addin Manager를 사용하여 코드를 내보내고 .def 및 .jmpcust 파일을 만들 수 있습니다(소스 폴더에 파일이 생성됩니다. , 그리고 제 경우에는 리포지토리에서 새 항목을 내보내면 내보내는 파일만 덮어씁니다.<BR /><BR /> 그런 다음 나는 그의 도구를 사용하여 모든 패키징, 보관 및 프로덕션 폴더에 배포합니다. 작업을 쉽게 하기 위해 Addin Manager 이전에 많은 추가 기능을 관리하고 있었기 때문에 모든 정보(추가 기능, 이름, 소스 폴더 등)를 저장하는 jmp 파일도 수동으로 편집하여 모든 추가 기능을 준비했습니다. 해당 인터페이스를 통해 수동으로 추가하는 대신 추가 기능을 시작할 때 이동).</P><P> </P><P>추가 기능 자체 외에도 사용자가 알림을 받고 새 릴리스가 프로덕션에 추가될 때 자동으로 추가 기능을 업데이트할 수 있도록 업데이트한 몇 가지 기능이 포함되어 있습니다.</P></LINGO-BODY><LINGO-SUB id="lingo-sub-385979" slang="en-US">Re: 추가 기능 관리자</LINGO-SUB><LINGO-BODY id="lingo-body-385979" slang="en-US"><P><A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/2173" target="_blank">@tsl</A> , 수동으로 압축할 때 추가 기능의 파일 구조는 어떻게 보입니까?</P>
<P>귀하의 코드에 CommonFiles 디렉토리에 대한 상대 경로가 포함되어 있기 때문에 추가 기능이 다음과 같이 보이는 것 같습니까?<SPAN style="font-family: inherit;">애드인 파일에 Release 폴더가 포함되어 있지 않습니까?</SPAN></P>
<P> </P>
<PRE>Addin_1.jmpaddin
|_Addin
|_Source<BR /> |_Code.jsl<BR /> |_Release<BR /> |_Something?<BR /> |_CommonFiles</PRE>
<P>위의 구조에서 'Addin' 폴더는 상대 경로에 대해 폴더 구조를 동일하게 유지하기 위해서만 존재합니다. 당신을 위한 경우입니까?</P>
<P>빌드 프로세스의 일부로 추가 기능 파일에 복사할 수 있는 새 선택적 디렉터리 경로를 추가할 수 있다고 생각합니다. 그러나 여전히 디렉토리 문제를 해결해야 합니다. 이를 해결하기 위해 제가 가지고 있는 아이디어는 CommonFiles 디렉토리의 위치를 설정하는 작은 스니펫을 추가하고 모든 공통 파일 포함에 사용하는 것입니다. 또는 프로덕션 위치에서 포함하려고 시도한 'IncludeCommonFile()' 함수를 생성하고 개발 위치로 장애 조치할 수 있습니다.</P>
<P> </P>
<PRE><CODE class=" language-jsl">commonFilesDir = Directory Exists("../CommonFiles/",
"../CommonFiles/", // production location
"../../CommonFiles/" // development location
);
//or
IncludeCommonFile = Function({file},
Try(Include("../CommonFiles/" || file), Include("../../CommonFiles/" || file));
);
이렇게 하면 다음과 같은 구조가 제공되며 공유 폴더 기능을 추가하면 효과가 있을 것이라고 *생각*합니다. 내가 생각할 수 있는 한 가지 문제는 Source 내에 추가 폴더가 있는 경우 Include 기능이 작동하지 않거나 디렉토리 변수를 사용하여 Include에 추가 '../'가 필요하다는 것입니다.
Addin_1.jmpaddin
|_Source
|_Code.jsl
|_CommonFiles
Re: 추가 기능 관리자안녕 @저스틴_칠튼 ,
방금 귀하의 추가 기능 관리자를 발견했고 흥미를 느꼈습니다. 저는 .jmpcust 파일을 수동으로 편집하는 것을 포함하여 수년 동안 수동으로 추가 기능을 관리해 왔습니다. 귀하의 추가 기능 관리자와 함께 내 삶을 훨씬 더 쉽게 만들 수 있는 기회가 보입니다. 그런데 제가 하고 싶은 일을 지원하게 하는 방법이 궁금합니다.
제안된 폴더 구조는 첨부된 이미지를 참고하겠습니다. 아이디어는 JMP 코드를 포함하는 폴더가 있다는 것입니다. 여기서는 RepositoryRoot라고 부를 것입니다. 이 폴더는 GIT 랩 리포지토리에 있으며 두 명 이상의 JSL 개발자 간에 공유 및 동기화됩니다.
각 개발자는 저장소에 있는 추가 기능을 소유합니다. Addin_1 및 Addin_2라고 합시다. 이러한 추가 기능은 리포지토리 내의 해당 하위 폴더에 있습니다.
두 애드인에서 모두 사용하는 몇 가지 표준 JSL 라이브러리 파일을 포함하는 리포지토리 내에서 CommonFiles라고 하는 폴더도 있습니다.
이러한 표준 라이브러리 파일은 개별 추가 기능에 포함되어 있습니다. 예를 들어 Addin_1\Source 내의 JSL 파일에는 다음과 같은 줄이 있을 수 있습니다.
include("..\..\CommonFiles\LibraryFile1.jsl");

따라서 문제는 Add-in Manager에서 이 구조를 어떻게 활용할 수 있느냐는 것입니다. 두 가지 가능한 옵션에 문제가 있습니다.
1) 추가 기능 관리자에서 "RepositoryRoot"를 소스 폴더로 설정하면 RepositoryRoot에 Addin.def 및 Addin.jmpcust가 생성됩니다. 주어진 소스 폴더에 addin.def를 하나만 가질 수 있고 별도의 개발자와 별도의 추가 기능을 갖고 싶지만 코드를 공유하기를 원하기 때문에 이것은 작동하지 않습니다.
2) "RespositoryRoot\Addin_1\Source"를 Source Folder로 하면 Addin_1 하위 폴더의 Source 폴더에 addin.def와 addin.jmpcust가 생성됩니다. 자체 폴더에 들어 있기 때문에 좋습니다. 그러나 디렉토리 트리의 두 수준에서 추가 기능에 CommonFiles 폴더를 추가하는 방법을 볼 수 없습니다. 코드에는 공통 파일 폴더가 필요하지만 코드 공유 및 동기화를 위해 더 높은 수준으로 유지하려고 합니다.
추가 기능이 릴리스되기 전에 궁극적으로 "CommonFiles" 폴더가 각 최종 .jmpaddin 파일에 복제되어야 한다는 것을 이해합니다.
우리를 위해 그것을 관리할 추가 기능 관리자 기능을 찾을 수 있기를 희망했습니다. 대안은 수동으로 .zip 파일을 만들고 필요한 방식으로 폴더 구조를 설정한 다음 게시하기 전에 확장자를 .jmpaddin으로 변경하는 것입니다.
아이디어가 있거나 추가 기능 관리자가 이 기능을 지원하도록 하는 것이 좋습니다.
많은 감사
톰
Re: 추가 기능 관리자당신의 답변에 감사드립니다 @Justin_Chilton ! 결국 색상 문제를 완전히 피하기 위해 jmp에 대한 밝은 테마를 적용했습니다. 지연 시간을 해결하기 위해 이스케이프 키를 클릭하여 제안을 시도하겠습니다.
Re: 추가 기능 관리자안녕 @알라비 ,
느린 응답 시간에 무슨 일이 일어나고 있는지 잘 모르겠습니다. 내 추가 기능의 문제인지 JMP의 문제인지 확인하기 위해 추가 조사를 수행해야 합니다. 그러나 적절한 해결 방법을 찾았습니다. 텍스트 편집 상자를 처음 클릭할 때 텍스트에 더 이상 초점이 맞지 않을 때까지 Esc 키를 누르고 있습니다. 이제 모든 편집 상자는 클릭한 후 지연 없이 작동합니다.
색 구성표에 관해서는 무엇이 원인인지 잘 모르겠습니다. 2.5 이후의 모든 버전의 추가 기능은 어두운 테마에 적절한 색상을 지정해야 합니다. 해당 문제를 재현하는 유일한 방법은 JMP가 열려 있는 동안 밝은 테마에서 어두운 테마로 전환하는 것입니다. 나는 항상 회색 테마로 아래의 보기를 얻습니다.

Re: 추가 기능 관리자여기요 @저스틴_칠튼 ,
MacOS에서 실행되는 JMP 15.1에서 추가 기능의 v2.9를 사용하고 있습니다. 추가 기능의 텍스트 상자에 텍스트를 입력해야 할 때마다 응답 시간이 매우 느립니다. 이것은 너무 느려서 추가 기능을 사용할 수 없게 만듭니다.
두 번째로 더 작은 문제는 어두운 모드에서 설정된 JMP에서 색 구성표가 제대로 작동하지 않는다는 것입니다. 텍스트 상자의 텍스트 색상이 너무 밝아서 배경색으로 읽을 수 없습니다.

Re: 추가 기능 관리자@저스틴_칠튼 이전 추가 기능이 올바르게 보관되고 새 추가 기능이 업데이트되었지만 여전히 오류가 표시되므로 쓰기 액세스 권한이 있다고 생각합니다. 구체적으로 어떤 단계가 실패했는지 잘 모르겠습니다. 탑재된 네트워크 드라이브와 관련하여 불행히도 나는 아마도 그 드라이브에 대해 깊이 알지 못할 것입니다. 나는 그 상태에 대해 확신하지 못하지만 아마도 동료들에게 더 자세히 알아보도록 요청할 수 있습니다.
Re: 추가 기능 관리자@Djtjhin , 그것은 셰어 포인트 위치와 매우 관련이있는 것처럼 들립니다. 파일 탐색기에서 파일을 만들어 해당 위치에 대한 쓰기 권한이 있는지 확인할 수 있습니까? 권한이 있더라도 JMP는 응용 프로그램으로 권한이 없을 수 있습니다. 일반 네트워크 경로를 사용하고 있습니까 아니면 탑재된 네트워크 드라이브를 통해 저장하고 있습니까? JMP가 마운트된 드라이브에 저장할 수 있기 때문에 Sharepoint 서버를 네트워크 드라이브로 마운트하면 권한과 관련된 문제를 해결할 수 있습니다. 일반 네트워크 경로를 사용하면 JMP가 지원하지 않는 자격 증명이 필요할 수 있습니다.
Re: 추가 기능 관리자Justin을 명확히 해 주셔서 감사합니다!
후속 질문입니다. 프로덕션에 배포하려고 할 때 다음 오류 메시지가 나타납니다. 대상 폴더는 실제로 셰어포인트입니다. 그게 이유인지 아니면 해결 방법이 있는지 잘 모르겠습니다.
에러 메시지:
{"쓰기 모드에서 파일이 열리지 않습니다. "(1, {1}, 2, "텍스트 파일 저장", 텍스트 파일 저장 /*###*/(filepath, str))}
오류: 쓰기 모드에서 파일이 열리지 않습니다.
1번.
데이터 테이블 인덱스: 1
유형: 오류
함수 이름: 텍스트 파일 저장
실행 중인 함수: 텍스트 파일 저장 /*###*/(filepath, str)
호출 스택:
배포 선택
Re: 추가 기능 관리자@Djtjhin ,
사용자가 JMP를 시작할 때마다가 아니라 추가 기능을 사용할 때마다 확인하도록 각 명령에 명령문을 넣는 것이 좋습니다. 또한 시작 시 추가 기능을 업데이트하는 데 문제가 있으므로 사용자가 클릭하고 추가 기능 명령을 수행할 때 수행하는 것이 더 안전한 방법입니다.
Re: 추가 기능 관리자@Justin_Chilton 이전에 Sebastien에게 제공한 답변을 명확히 할 수 있습니까? 따라서 자동 업데이트 문(아래)을 "시작 스크립트"(스냅샷)에 넣으면 작동합니까? 아니면 각 명령 스크립트 아래에 자동 업데이트 문만 포함해야 합니까?
Include( "$ADDIN_HOME(com.jmp.myaddin)\updateCheck.jsl" );
com.jmp.juchil.addinmanager:checkForUpdate();

감사
다니엘
Re: 추가 기능 관리자확인했습니다. 다시 작동합니다. 감사합니다!
Re: 추가 기능 관리자감사 @pauldeen .여기에는 여러 가지 다른 요인이 충돌했다고 생각합니다. 하나는 최종 JMP 16.0 릴리스에서 오류가 해결되어야 하지만 EA8에는 있었습니다. 또한 이 오류는 로케일이 내가 사용한 날짜 형식을 지원하지 않기 때문에 발생할 수 있습니다. 이 문제를 해결하고 로케일에 더 친숙해지기 위해 특정 형식 대신 로케일 날짜 시간을 사용하도록 날짜 형식을 지정하는 일부 위치를 업데이트했습니다. 이렇게 하면 오류가 수정되고 날짜가 더 친숙한 형식으로 지정됩니다.
Re: 추가 기능 관리자폴더에 대한 2.8 수정에 감사드립니다!
나는 당신을 위해 새로운 것을 가지고 있습니다 :
추가 기능 관리자를 열고 추가 기능을 선택했습니다.

JMP 16EA8을 실행 중입니다.
Windows 10에서 JMP 15.2.0에서 동일한 문제가 발생하지 않습니다.
Re: 추가 기능 관리자@저스틴_칠튼 고맙습니다! 나는 그것을 시도할 것이다.
Re: 추가 기능 관리자@pauldeen , 보고 있던 하위 폴더 문제를 수정하는 새 버전(v2.8)을 방금 업로드했습니다. 또한 원래 작동할 것으로 예상했던 것처럼 자동으로 폴더를 생성하는 확인란 옵션을 추가했습니다.
Re: 추가 기능 관리자@스부렐 , 메뉴 항목 명령 시작 부분과 같이 업데이트를 확인하려는 모든 위치에 해당 코드를 추가할 수 있습니다. 이렇게 하면 사용자가 명령을 클릭할 때 추가 기능을 시작하기 전에 새 버전을 확인하도록 할 수 있습니다.
제 기억이 맞다면 addinLoad.jsl 파일에서 이 코드를 사용하는 데 문제가 있었는데, 이로 인해 JMP 시작 시 확인되지만 추가 기능이 실행되는 동안 추가 기능을 다시 설치하는 데 문제가 있었습니다. 아직 로드 중입니다. 이 문제는 여전히 문제일 수도 있고 아닐 수도 있습니다.
-저스틴
Re: 추가 기능 관리자@저스틴_칠튼
정말 멋진 애드인입니다. 정말 잘 작동합니다.그런데 자동업데이트 기능을 사용하는데 애를 먹고 있습니다. 특히 다음 코드 스니펫을 추가하기에 적절한 파일/위치가 헷갈립니다.
Include( "$ADDIN_HOME(com.jmp.myaddin)\updateCheck.jsl" );
com.jmp.juchil.addinmanager:checkForUpdate();
최고
세바스티앙
Re: 추가 기능 관리자@저스틴_칠튼 아 예, 빈 폴더를 생성하면 이 화면을 지나게 됩니다. 폴더 이름은 중요한 것이 아니라 비어 있다는 사실만 알 수 있습니다.
테스트에서 나는 다음과 같은 다른 버그를 발견했습니다.
Add-In Manager v2.7.jmpaddin을 가져와서 빈 폴더를 만든 다음 다음과 같이 로드하면 추가 화면이 표시되지만 큰 오류가 발생합니다. 내부에 하위 폴더가 있는 다른 추가 기능에서도 마찬가지입니다. .

Re: 추가 기능 관리자@pauldeen 소스 폴더는 jmpaddin 파일도 압축이 풀릴 위치입니다(아마도 자동으로 폴더를 생성하도록 했어야 했지만 그렇게 하지 않은 것 같습니다). "Desktop" 폴더 안에 "ASM Training Material"이라는 폴더를 만들고 소스 폴더로 설정하는 것이 좋습니다. 소스 폴더는 추가 기능에 모두 압축되어 있기 때문에 아무 것도 포함할 수 없습니다.
Re: 추가 기능 관리자@저스틴_칠튼 기존 .jmpaddin 파일에서 추가 기능을 추가할 때 이 화면에 버그가 있습니다.

소스 폴더를 비워 둘 수 없으며 거기에 아무 것도 넣으면 jmpaddin 파일에서 시작할 때 비어 있어야 한다는 경고가 표시됩니다.
Re: 추가 기능 관리자매력처럼 작동합니다. 헤닝 감사합니다
Re: 추가 기능 관리자안녕 @vohwinkelh0 ,
신고해 주셔서 감사합니다. 나는 며칠 전에 그 오류를 보았고 귀하의 의견을 상기시켜 주었으므로 마침내 파일/디렉토리 기능 중 하나의 버그에 대한 문제를 추적할 수 있었습니다.
현재 이 문제를 해결하기 위해 이 페이지의 추가 기능을 업데이트했지만 JMP 16이 릴리스되기 전에 해결할 수 있도록 JMP의 문제도 언급했습니다.
감사,
저스틴
Re: 추가 기능 관리자저스틴,
JMP16EA 프로그램의 일부로 추가 기능에 오류가 발생합니다. 거기에 버그 보고서를 제출하기를 원하십니까, 아니면 여기에 게시해야 합니까?
헤닝
Re: 추가 기능 관리자공유해주셔서 감사합니다... 다음주에 시도해보겠습니다.
Re: 추가 기능 관리자@guillaumebugnon 그래서 스크립트를 암호화하기 위해 for 루프에서 이 함수를 사용합니다.
encryptScript = Function({filepath},
{defaultLocal},
errortxt = "";
winCount = N Items (Window ());
scriptWin = Open (filePath);
scriptWin << Bring Window to Front;
Wait (1);
Main Menu ("Encrypt Script");
windowList = Window ();
encryptedWin = windowList[nitems(windowList)]; // get reference to encrypted script window (i.e. the last window)
//TODO: Implement without Try
Try (
encryptedScript = encryptedWin[Script Box(1)] << Get Text;
save text file(filePath, encryptedScript);
ConsoleMsg("File Encrypted: "||filepath); // hoping this goes to stdout
,
errortxt ||= char(exception_msg) || "\!r\!n";
);
Try (scriptWin << Close WIndow());
Try (encryptedWin << Close WIndow());
Return (errortxt)
);
그럼 나는 다른 자동 암호를 입력하고 Enter 키를 누르는 스크립트.
그것은 확실히 완벽한 솔루션이 아니며 귀하의 위시리스트 항목 훨씬 더 좋을 것입니다.
Re: 추가 기능 관리자@pauldeen ,
사용자 지정 메뉴 추가 기능과 관련된 문제를 보고해 주셔서 감사합니다. 이 문제를 해결해야 하는 새 버전을 방금 업로드했습니다.
-저스틴
Re: 추가 기능 관리자@저스틴_칠튼 답변 감사합니다.
다른 jsl 파일(또는 다른 방법)을 암호화할 수 있는 jsl capabale 기능이 있으면 유용할 수 있습니다.
내가 봤다 @vince_faller 오늘 아침(프랑스 시간) 프레젠테이션. 좋은 것.
Devops 프로세스도 있지만 더 자동화해야 합니다.
기욤
Re: 추가 기능 관리자
@guillaumebugnon ,
@vince_faller 스크립트 암호화에 대한 몇 가지 팁이 있을 수 있습니다. 그러나 zip 프로세스 전에 추가할 파일을 수정할 수 있도록 하려면 추가 기능 관리자에 기능을 추가해야 합니다.
제 생각에는 @vince_faller 또한 어제 여기에서 귀하에게 유용할 수 있는 프레젠테이션/웹캐스트를 수행했습니다. https://www.brighttalk.com/webcast/18305/412912
- 저스틴
Re: 추가 기능 관리자모두들 안녕,
jmpaddin 파일에 압축되기 전에 스크립트를 암호화하는 방법이나 경험이 있는 사람이 있습니까?
감사
문안 인사,
기욤
Re: 추가 기능 관리자
JMP15 Windows 10에서 실행되는 추가 기능 관리자는 더 이상 기존 추가 기능의 메뉴 구조를 구문 분석할 수 없습니다.
재현하려면: 새 애드인을 만들고 사용자 지정을 사용하여 최상위 메뉴의 이름을 바꿉니다. 명령을 만들고 추가 기능 정의를 저장합니다.
추가 기능 관리자를 닫고 다시 열고 방금 생성된 추가 기능에 대한 메뉴 항목 탭을 보십시오(다른 추가 기능 메뉴 구조를 보기 전에 먼저 이 탭을 확인하십시오).
이 기능을 사용하려면 최상위 메뉴 항목을 변경하지 않고 기본 "추가 기능"으로 두는 두 번째 추가 기능을 만드십시오. 이 추가 기능을 저장합니다. 추가 기능 관리자를 닫고 다시 열고, 먼저 기본 최상위 레벨 이름을 가진 메뉴 구조를 본 다음 사용자 정의 메뉴 구조로 이동하십시오. 그것은 모두 다시 작동합니다.
Re: 추가 기능 관리자#2는 JMP15/OSX15로 시작했지만 아직 2.4를 시도하지 않았으며 다시 알려드리겠습니다.
Re: 추가 기능 관리자고마워, 저스틴!!
Re: 추가 기능 관리자안녕 @john_madden ,
연락해 주셔서 감사하고 지연에 대해 사과드립니다.
#1은 방금 여기에 업로드한 v2.4에서 해결되어야 합니다.
#2의 경우 Windows에서는 이 문제를 복제할 수 없지만 Mac에서는 추가로 조사하겠습니다. 이 문제가 특정 JMP 버전 번호(예: JMP 14/15) 또는 macOS 버전(10.14/15)에서 시작되었는지 아니면 항상 발생했는지 알고 계십니까?
감사,
저스틴
Re: 추가 기능 관리자안녕하세요 저스틴입니다.
JMP 15/Mac OS 10.15에서 추가 기능 관리자에 몇 가지 문제가 있습니다.
(1) [사소한] 최대/최소 JMP 버전 옵션에는 15가 포함되어야 합니다.
(2) [덜 사소한] 관리자 내의 여러 창에 있는 텍스트 상자에 텍스트를 입력하는 것이 (부분적으로) 깨져 보입니다. 붙여넣기로 텍스트(예: 추가 기능 이름, 버전 등)를 입력할 수 있지만 입력으로는 입력할 수 없습니다.
감사.
존 매든
Re: 추가 기능 관리자안녕하세요, 저는 수년 동안 수동으로 변경 사항을 관리한 후 추가 기능 관리자를 사용하기 시작했습니다. 그러나 최근에 메뉴 항목이 표시되지 않는 문제가 발생했습니다. 최근에 JMP 14.3.0으로 업데이트했는데 이것이 관련이 있는지 확실하지 않습니다. 전에는 이것에 문제가 없었습니다.
보시다시피 플래그가 지정된 빌드 또는 배포에는 오류가 없으므로 무슨 일이 일어나고 있는지 잘 모르겠습니다.
처음부터 다시 작성하고 싶지 않기 때문에 어떤 도움이나 제안도 감사합니다.
문안 인사,
데릭.

Re: 추가 기능 관리자안녕 아담,
답변이 늦어진 점 사과드립니다. 시도를 제거할 때 표시되는 오류 메시지를 기반으로 하면 updateCheck 스크립트가 customMetadata 파일을 찾을 수 있다는 가정이 정확했던 것 같습니다. 나는 당신이 '
aa = 포함 ( "$ADDIN_HOME(com.jmpTest.myjmpaddin)\customMetadata.jsl" ) ;' 스크립트의 일부입니다. 그러나 실제로 거기에 파일을 포함할 필요는 없습니다. 대신 updateCheck.jsl 스크립트 내에서 포함을 변경하려고 합니다. 다음과 같아야 합니다(11행 주변).
customMetadata_aa = Include( "<SPAN>$ADDIN_HOME(com.jmpTest.myjmpaddin)\</SPAN>customMetadata.jsl" );
추가 질문이 있으면 알려주세요.
문안 인사,
저스틴
Re: 추가 기능 관리자안녕하세요 저스틴입니다.
이것은 첫 번째 Add-In이고 JMP 경험(약 11개월 사용)과 관련하여 유아이기 때문에 업데이트 확인 기능을 활성화하는 작업을 하는 동안 간단한 질문을 시작할 수 있습니다.더 강력한 프로그램에 적용하기 전에 이 기능을 이해할 수 있도록 업데이트 기능에만 중점을 두는 간단한 테스트 추가 기능을 만들었습니다.
대본:
aa = Include( "$ADDIN_HOME(com.jmpTest.myjmpaddin)\customMetadata.jsl" );
Include( "$ADDIN_HOME(com.jmpTest.myjmpaddin)\updateCheck.jsl" );
com.jmp.juchil.addinmanager:checkForUpdate();
New Window ("Test 3",
Panel Box ("Test 3",
Text Box("Test 3")
)
);
귀하의 질문에 대한 답변:
- "메타데이터 파일 생성" 기본 설정이 설정되어 있습니까?
- "메타데이터 파일 생성" 확인란을 선택했지만 스크립트에 포함 문을 포함하는 사용자 지정 메타데이터 코드가 없었습니다.위에서 볼 수 있는 것처럼 업데이트 확인 코드 직전 행에 이 코드 줄을 추가했지만 문제가 해결되지 않았습니다.
- 내 애드인의 디렉토리 구조는 무엇입니까?
- Add-In Manager 창 중간 부분의 Files 탭 아래에 addin.def, addin.jmpcust, customMetadata.jsl, updateCheck.jsl이 모두 같은 폴더 안에 존재합니다.해당 폴더는 추가 기능 파일 자체(<파일 이름>.jmpaddin)와 동일한 상위 폴더에 있습니다.
- 이 폴더는 서버가 아닌 내 C 드라이브에 있습니다.이 파일을 서버에도 저장해야 합니까?
- 하단 섹션인 Prod 탭에는 세 가지 옵션이 모두 서버 위치에 저장됩니다.각 폴더에는 고유한 폴더가 있으며 세 개의 폴더는 모두 동일한 상위 폴더 내에 있습니다.
- ARCHIVE – 배포할 때 추가 기능의 이전 반복만 포함합니다.
- META –publishedAddins.jsl 파일만 포함
- PROD – 추가 기능 설치 프로그램 파일 .jmpaddin만 포함
- "Try()"를 주석 처리할 때 어떤 오류 메시지가 나타납니까?
- "파일 오류: 경로가 잘못되었습니다: \customMetadata.jsl" 오류 메시지가 나타납니다.
- 파일 탭(가운데 섹션)에서 호출되는 대로 위의 위치 경로를 $ADDIN_HOME... 언어에서 내 C 드라이브의 정확한 위치로 변경하려고 시도했습니다.도움이되지 않았습니다. 동일한 오류 메시지가 나타납니다.
도와 주셔서 감사합니다!
-아담
Re: 추가 기능 관리자안녕 @Adam_R ,
세부 사항에 대한 모든 작업에 감사드립니다! 몇 가지 질문과 시도해 볼 사항:
- "Custom Metadata" 기본 설정 그룹 아래에 "Create Metadata File" 기본 설정이 있습니까? 이 파일은 업데이트 스크립트가 통과하는 데 필요합니다.
- 애드인의 디렉토리 구조는 어떻습니까? 하위 폴더에 'com.jmp.juchil.addinmanager:checkForUpdate'를 호출하는 스크립트가 있습니까? 그렇다면 updateCheck.jsl 파일은 폴더가 호출되는 동일한 폴더에 있을 것으로 예상하므로 기능이 작동하지 않습니다. 이에 대한 해결 방법은 addin의 루트 수준에서 updateCheck 함수를 호출하는 다른 JSL 파일(customMetadata.jsl 및 updateCheck.jsl과 동일)을 추가하고 해당 파일을 하위 수준 JSL 스크립트에 포함하는 것입니다. 또 다른 옵션은 상대 파일 이름 대신 '$addin_home(com.jmp.myaddin)/customMetadata.jsl'을 사용하도록 updateCheck.jsl 스크립트를 편집하는 것입니다. 이것이 문제라면 추가 기능을 업데이트하여 함수를 호출하는 기본 디렉토리에 크게 의존하지 않는 경우 더 유연하게 만들 수 있습니다.
- updateCheck.jsl 스크립트가 구현되어 추가 기능의 워크플로를 방해하지 않도록 Try()를 사용하여 자동으로 실패합니다. 따라서 처음 두 가지 제안 중 어느 것도 문제를 해결하지 못한다면 updateCheck.jsl 파일 내에서 Try()를 주석 처리하고 업데이트를 확인하려고 할 때 어떤 오류 메시지가 나타나는지 알려주시겠습니까?
질문이 있으면 알려주세요.
문안 인사,
저스틴
Re: 추가 기능 관리자안녕하세요 저스틴입니다.
Add-In Manager v2.3은 모든 면에서 훌륭하게 작동하지만 한 가지는 업데이트를 올바르게 푸시하기 위해 updateCheck를 가져올 수 없습니다.몇 가지 사실:
- 업데이트 확인 이외의 내 코드가 올바르게 실행됩니다.
- 내 PROD 폴더 "Metadata" 및 "Deployment"는 모두 동일한 상위 폴더 아래의 서버 위치에 있으며 사용자가 둘 다에 액세스할 수 있음을 확인했습니다.
- 기본 설정 섹션 내에서 "업데이트 확인 스크립트 포함"을 선택하고 이 섹션에 제공된 포함 문을 내 코드에 복사했습니다.내 추가 기능과 일치하도록 (com.jmp.myaddin)에서 이 명령문의 추가 기능 ID 섹션을 편집했습니다.이 명령문 내에서 다른 것을 편집하지 않았으며 updateCheck.jsl 스크립트 내에서 아무 것도 편집하지 않았습니다.
- 애드인을 변경하여 PROD에 배포할 때 Metadata 서버 파일에 있는 게시된Addins.jsl 파일 내의 "pubDate"가 배포할 때마다 변경되는 것을 확인했습니다.
- 사용자가 PROD 폴더에 있는 기존 버전의 파일을 다운로드하고, JMP를 닫고, JMP를 다시 열고, 추가 기능을 성공적으로 실행하도록 했습니다.
- PROD에 새로운 반복을 배포하고 pubDate가 변경되었는지 확인하고 이전 사용자에게 JMP를 다시 열고 기존 추가 기능을 실행하도록 요청했습니다.사용자에게 추가 기능을 업데이트하라는 메시지가 표시되지 않습니다.
- 동일한 사용자가 PROD 폴더로 이동하여 추가 기능을 성공적으로 업데이트한 추가 기능을 다시 설치하도록 했습니다.
Re: 추가 기능 관리자안녕하세요 오브리입니다.
updateCheck.jsl 스크립트 내의 Include 문은 customMetadata.jsl 파일에 대한 상대 경로를 사용합니다. 두 파일이 같은 폴더에 있는 한 제대로 작동해야 합니다. 추가 기능의 폴더 구조는 어떻게 됩니까?
이 공개 게시물에서 원하지 않는 내용을 보내야 하는 경우 언제든지 개인 메시지를 보내주십시오.
감사,
저스틴
Re: 추가 기능 관리자저스틴,
자동 업데이트 기능에 문제가 있습니다.문제를 updateCheck.jsl 스크립트로 다시 추적했습니다.
다음 줄이 실패하면 try 문이 종료됩니다.
customMetadata_aa = Include("customMetadata.jsl" );
파일 경로에 다음을 추가하면 문제가 없고 광고한 대로 작동하는 것처럼 보입니다.
$ADDIN_HOME(my_addin_here)
각 애드인에 대해 이 작업을 수행해야 합니까 아니면 자동으로 해야 합니까?
감사,
오브리
Re: 추가 기능 관리자저스틴,
버전 2.3은 내 Mac에서 매력처럼 작동합니다!고맙습니다!!!
남자
Re: 추가 기능 관리자@저스틴_칠튼 감사! 시도해 보겠습니다.
Re: 추가 기능 관리자@john_madden ,
신고해 주셔서 감사합니다! Mac을 사용하는 것 같으며 소스 폴더 중 하나의 이름을 바꾸거나 삭제해야 합니다. 더 이상 실패하지 않도록 지금(v2.3)에 대한 검사를 추가했습니다.
Re: 추가 기능 관리자@nathan-clark ,
아직 버전 1.3의 추가 기능이 있는 경우 해당 버전의 ID와 메뉴 항목 이름을 변경하고 새 버전과 함께 사용할 수 있습니다. 버전 1에서는 확인란을 사용하여 한 번에 여러 개를 빌드할 수 있으며 버전 2에서 사용하는 데이터 테이블과 연결할 수 있어야 합니다. v2.0에서는 아키텍처가 많이 변경되었으므로 불행히도 확인란을 제거해야 했습니다. 나는 그것을 나중에 다시 추가하기 위해 내 목록에 있습니다.
Re: 추가 기능 관리자안녕하세요 저스틴입니다.
JMP 14.0.1에서 다음 오류가 계속 발생합니다.
오류 메시지: {"argument must be list"(1, 2, "Concat Items", Concat Items /*###*/(errorList, " "))} 오류: 인수는 1번 목록이어야 합니다. 유형: 오류 함수 이름: Concat 항목 실행 중인 함수: Concat 항목 /*###*/(errorList, " ") 호출 스택: getLastModifiedDateOfNewestFile getStatusIcon refreshAddinTableBox initialize
어떤 아이디어? 매니저 2.2입니다.
남자
Re: 추가 기능 관리자@저스틴_칠튼
이 추가 기능에 다시 한 번 감사드립니다. 나는 마침내 새 버전에 대한 속도를 높이고 내가 수동으로 하던 일에 대한 귀하의 개선 사항 중 일부를 활용하고 있습니다.
내 질문은 이것이 가능한지 확실하지 않지만 한 번에 여러 애드인을 빌드할 수 있다는 것입니다. 정보 및 디렉토리에 대한 하단 패널이 애드인에 따라 다르다는 것을 알고 있지만 둘 이상의 애드인이 선택되면 사라질 수 있습니다. 그런 다음 선택된 모든 항목은 DEVd/Deployed/etc가 될 수 있습니다.
저는 지금 40개가 넘는 애드인을 관리하고 있으며 종종 일괄 업데이트를 수행하므로 모든 애드인을 한 번에 많이 할 수 있다는 것이 놀랍습니다!
Re: 추가 기능 관리자감사합니다! 이제 추가 기능을 만들고 업데이트하는 것이 너무 쉬워서 이 도구 이전의 암흑기보다 더 자주 자체 추가 기능을 개발하고 개선합니다.
Re: 추가 기능 관리자저는 매우 훌륭하고 자선적이며 제가 가르치는 것을 좋아하는 소프트웨어 프로그램의 13번째 버전에 대해 JMP 개발자들에게 감사드립니다. 나는 버전 5.0부터 그것을 가지고 있었고, 종이 매뉴얼이 잘 정리되어 있고 솔직히 말해서 그 버전 이후로 나에게 가치가 있는 것은 아무것도 추가되지 않았습니다. 하지만 나처럼 버전 5.0을 사랑하면서 매년 기꺼이 기꺼이 업그레이드했습니다. 그리고 나서 ROC-곡선 및 곡선 아래 부분 면적 분석 JMP12에서 아름다운 스크립트가 나왔습니다. 저는 학생들에게 ROC 곡선에 대해 보여주기 위해 교육 세션을 설정했습니다.... 그리고 v13으로 업그레이드했습니다..... 그리고 이제 곡선이 표시되지 않습니다. 우우.
Re: 추가 기능 관리자안녕 @tejvishnu ,
예, 이 추가 기능을 설치하려면 JMP 13이 필요합니다. 불행히도 이 추가 기능을 JMP 12와 호환되도록 만들 수 없었습니다. 이 정보를 포함하도록 게시물을 업데이트했습니다.
감사,
저스틴
Re: 추가 기능 관리자추가 기능이 내 컴퓨터에 설치되지 않은 것 같습니다. 컴퓨터. 이것은 최근에 업로드된 일부 추가 기능의 문제인 것 같습니다. 이 추가 기능에 JMP-13이 필요합니까?
내 컴퓨터에 JMP 12.2가 있습니다.