2017-03-07 7 views
0

대화 상자에서 속성 값을 선택한 텍스트로 변경하고 싶습니다.InstallScript에서 속성을 변경하는 방법

이것은 내 샘플 소스입니다.

#include "ifx.h" 
STRING outPath; 
export prototype MyFunction(HWND); 

function OnFirstUIBefore() 
    NUMBER nResult, nSetupType, nvSize, nUser; 
    STRING szTitle, szMsg, szQuestion, svName, svCompany, szFile, szDir; 
    STRING szLicenseFile; 
    BOOL bCustom, bIgnore1, bIgnore2; 
begin 

Dlg_SdAskDestPath:  
    nResult = SdAskDestPath(szTitle, szMsg, INSTALLDIR, 0); 
    if (nResult = BACK) goto Dlg_SdAskDestPath; 

Dlg_AskOutPath:  
    nResult = AskDestPath(szTitle, szmsg, szDir, 0); 
    if (nResult = BACK) goto Dlg_SdAskDestPath; 
    outPath = szDir; 
    MyFunction(ISMSI_HANDLE); 

return 0; 
end; 

function MyFunction(hMSI) 
    STRING value; 
begin 
    MsiSetProperty(hMSI, "OutPutPath", outPath); 
end; 

완료 후 사용자 지정 작업에 사용되는 OutPutPath.

그러나 OutPutPath는 사용자 지정 작업에서 읽을 때 변경되지 않았습니다.

ISMSI_HANDLE을 사용하면 안됩니다. 그러나 나는 내가 대신 사용해야하는 것을 모른다.

설치 완료 후 설치 스크립트의 메서드 MyFunction을로드하는 사용자 지정 작업을 시도했습니다.

그것은 잘 작동하지만 전역 변수 outPath는

당신이 알고있는 경우에 나는이 작업을 수행 할 수있는 방법을 가르쳐주십시오 .. 빵점이었다.

감사합니다.

답변

0

최소한 public property, 즉 소문자가없는 이름을 사용해야합니다. 제한된 환경에서의 설치를 지원하는 경우 사용자가 수정할 수 있도록 SecureCustomProperties에 나열해야 할 수도 있습니다.

내가 설치 완료 후 스크립트의 방법하여 myFunction 설치로드 사용자 지정 작업을 만들려고 :

그러나 나는 당신의 의견에 의해 설명 정확한 시나리오 확실하지 않다.

이 시나리오는 설치의 Windows Installer 부분이 끝난 후 (InstallScript MSI가 전후에 코드를 실행 함) 전체적으로 등록 정보가 살아남지 못할 수도 있습니다. 이 시점에서 값을 읽는 것을 지원하려면 레지스트리에 값을 쓰거나 파일 (예 : SUPPORTDIR)에 값을 쓰는 등의 다른 방법을 고려해야합니다.