응용 프로그램에서 추가 기능을 만드시겠습니까? 앱 경로를 가져오시겠습니까?내가 만든 응용 프로그램에서 추가 기능을 만드는 방법이 있습니까? 응용 프로그램은 상당히 복잡하며 추가 기능에 번들로 추가하고 싶습니다. 또한 누군가 다음 문제를 해결하는 데 도움을 줄 수 있으면 이 문제가 해결될 수 있습니다.
애플리케이션을 빌드하고 폴더(myApp/)에 두고 소스 디렉토리(myApp/src/)에서 include()하려는 스크립트가 있습니다. 그러나 앱 내에서 Get Default Directory()를 시도하면 "/"가 반환되어 응용 프로그램이 다른 컴퓨터에서 실행된 경우 소스 폴더를 찾을 수 없습니다. 현재 실행 중인 앱의 위치를 조회할 수 있는 방법이 있나요? 또는 내 파일에 안정적으로 액세스할 수 있도록(아마도 기본 경로 변수를 통해) 파일을 응용 프로그램에 묶을 수 있는 방법이 있습니까?
응용 프로그램을 추가 기능에 넣으려는 시도가 실패했습니다. 추가 기능에서 앱(.jmpappsource 또는 .jmpapp)을 실행할 수 없습니다. 또한 응용 프로그램이 상당히 복잡하기 때문에 추가 기능 빌더에서 다시 빌드하고 싶지 않습니다. 앱을 추가 기능으로 구성할 수 있는 방법이 있나요? JMP에 "응용 프로그램을 추가 기능으로 내보내기" 또는 "응용 프로그램에서 추가 기능 만들기" 기능이 추가되면 좋을 것입니다.
Re: 응용 프로그램에서 추가 기능을 만드시겠습니까? 앱 경로를 가져오시겠습니까?방법을 공유해 주신 nascif_jmp와 논문을 공유해 주신 ian_jmp에게 감사드립니다! 둘 다 도움이 되었지만 저는 다른 접근 방식으로 해결했습니다. 바로 내 앱/추가 기능을 재구성하는 것입니다. 다음은 내 응용 프로그램이 다른 컴퓨터에서 안정적으로 포함 파일을 찾을 수 있도록 하기 위해 수행한 단계입니다.
- 애플리케이션과 관련된 모든 파일/폴더를 폴더에 넣습니다(앱 루트 디렉터리 또는 간단히 루트 디렉터리라고 함).
- 응용 프로그램의 파일 및 디렉터리를 참조하려면 앱 루트 디렉터리 및 상대 경로에 대한 경로 변수를 사용하십시오.
- 예를 들어, 내 스크립트가 있는 "src/" 폴더와 이미지 및 아이콘이 있는 "lib/" 폴더를 포함하는 "$appRoot/" 디렉토리가 있습니다. 저는 이것을 "$appRoot/src/" 및 "$appRoot/lib/"라고 합니다.
- 앱을 .jmpapp 파일로 저장합니다. 앱 루트 디렉터리 아래 또는 하위 디렉터리 중 하나에 있습니다(루트 폴더에서 상대 경로를 통해 액세스할 수 있는 위치는 중요하지 않음).
- 추가 기능을 만들고 추가 파일 아래에 앱 루트 디렉터리를 추가합니다(jmp는 추가 기능에 포함할 모든 파일과 하위 디렉터리도 가져옵니다).이러한 파일은 추가 기능의 디렉터리에 있습니다.
- 이제 각 컴퓨터의 기본 위치에 있는 추가 기능의 디렉터리를 참조하여 모든 파일을 찾을 수 있습니다. 이 위치는 getPathVariable("ADDIN_HOME("내 추가 이름"))을 수행하여 검색됩니다. 이를 사용하여 이전 단계에서 추가한 파일 및 디렉터리를 찾습니다. 추가 기능 스크립트에서 경로 변수를 추가 기능 루트 디렉터리로 설정합니다.
- ADDIN_NAME = "내 애드인 이름";
- setPathVariable("appRoot", getPathVariable(evalInsert("ADDIN_HOME(^ADDIN_NAME^)")) || "앱 루트 디렉토리/");
- 이 루트 디렉토리에 상대적인 다른 경로 변수 설정
- open("$appRoot/pathToMyApp/myApp.jmpapp");을 사용하여 추가 기능 스크립트에서 응용 프로그램 파일을 실행합니다.
- 응용 프로그램을 배포하려면 필요한 파일과 함께 응용 프로그램이 포함된 추가 기능을 대신 배포하십시오.
Re: 응용 프로그램에서 추가 기능을 만드시겠습니까? 앱 경로를 가져오시겠습니까?또한 이 논문은 예측 다른 사람들이 이것을 어떻게 관리했는지 보여줍니다. JMP의 모범 사례 ® 애드인 관리
Re: 응용 프로그램에서 추가 기능을 만드시겠습니까? 앱 경로를 가져오시겠습니까?JSL 프레임워크를 서로를 포함하는 여러 모듈로 분해하려고 할 때 비슷한 문제가 발생했습니다. 메인 모듈에 다음 코드를 추가하여 해결했습니다.
// Find the current location in the source tree for the given file
__getThisPath = Function( {this_f},
{Default Local},
this_p = "";
ifl = Include File List();
For( ifli = 1, ifli <= N Items( ifl ), ifli++,
a_path = ifl[ifli];
idx = Contains( a_path, this_f );
If( idx > 0,
this_p = Left( a_path, idx - 1 );
Break();
);
);
If( this_p == "",
Throw( "Unable to find path for " || this_f )
);
Return( this_p );
);
파일 시스템에서 내 스크립트 위치를 결정한 후 이를 사용하여 종속성을 찾고 포함할 수 있었습니다.
// Use the current location in the source tree for this file
// in order to load its dependencies.
__INCLUDE = __getThisPath( "timeit.jsl" );
Set Path Variable( "TI_HOME", __INCLUDE );
Include( "$TI_HOME/../JSLhelpers/mfr.jsl" );