2014-09-28 12 views
-2

가능한 경우 도움이 필요합니까? 제품의 설치를 계속할 txt, DAT 또는 BIN 파일 일 수있는 라이센스 키 파일을 사용할 수있는 일련 이름 대신에 사용할 수있는 방법이 있습니까?라이센스 키 파일을 사용하여 정품 인증

Inno 설치를위한 VMPKit라고하는 솔루션이 있지만 값이 비쌉니다.

여기에 a link입니다!

당신이 나를 도울 수 있기를 바랍니다, 미리 내 친구 감사합니다.

답변

0

사용자 지정 마법사 페이지를 만들어야하고 자신의 응용 프로그램을 활성화하는 기능이 필요합니다. 쉽고 간단하지만 (내 방식으로) 앱 활성화를 위해 dll을 호출해야합니다.

"활성화"설정 페이지를 만들 때 시간이 많이 걸렸지 만 금새 시간이 낭비되는 것으로 나타났습니다. 현재 나는 VMP 웹 라이센스 관리자와 함께 VMProtect Ultimate을 사용하고 그것을 내 응용 프로그램에 통합하기 위해 vmpkit을 사용합니다. 상업용 소프트웨어에 대해 사과 드려 죄송 합니다만, 그만한 가치가 있다고 생각합니다.

은 VMPKit와 귀하의 이노 설치 스크립트는 것은 다음과 같습니다

[Code] 
var 
    ChoiceUserGroupPage : TInputOptionWizardPage; 
    ActivationType: Integer; 
    VmpikAppIsActivatedFlag : Boolean; 

var 
    VMPIK_SERIAL_FORMAT: array of integer; // see function InitializeSerialFormat and InitializeWizard 
    VMPIK_SERIAL_NUM_PARTS: integer; // = 10; 

const 

    VMPIK_SERIAL_NUM_PARTS_MAX = 16; 

    VMPIK_ACTIVATE_CHOICE_ALLOW_SERIAL   = True; // Change to your own value 
    VMPIK_ACTIVATE_CHOICE_ALLOW_LICENSE_KEY_FILE = True; // Change to your own value True 
    VMPIK_ACTIVATE_CHOICE_ALLOW_TRIAL   = True; 
    VMPIK_ACTIVATE_CHOICE_ALLOW_LATER   = True; // Change to your own value 
    VMPIK_ACTIVATE_CHOICE_ALLOW_ALREADY   = True; // Change to your own value 
    VMPIK_TRIAL_SERIAL_NUMBER = '{#TRIAL_SERIAL}'; //'XXXX-XXXX-XXXX-XXXX'; // Change to your own value or keep empty if VMPIK_ACTIVATE_CHOICE_ALLOW_TRIAL = False 
    VMPIK_ACTIVATION_LOG_ALLOW = True; // allow log activation process and /ACTIVATIONLOG command line switch 
    VMPIK_ACTIVATION_LOG_FILENAME_PREFIX = 'clp_'; // prefix for activation log filename 


var 
    ActivateChoicePage: TInputOptionWizardPage; 
    EnterSerialNumberPage: TWizardPage; 
    ChoiceKeyFilePage: TInputFileWizardPage; 

#include "select_grp_scrip.pas" 
#include "activate_hlp_script.pas" 


procedure InitializeSerialFormat(var fmt:Array of integer); 
begin 
    SetArrayLength(fmt,VMPIK_SERIAL_NUM_PARTS_MAX); 

    VMPIK_SERIAL_NUM_PARTS := 4; 
    fmt[0] := 4; fmt[1] := 4; fmt[2] := 4; fmt[3] := 4; 
    fmt[4] := 0; fmt[5] := 0; fmt[6] := 0; fmt[7] := 0; 
    fmt[8] := 0; fmt[9] := 0; fmt[10] := 0; fmt[11] := 0; 
    fmt[12] := 0; fmt[13] := 0; fmt[14] := 0; fmt[15] := 0; 

end; 

function ShouldSkipPage(PageID: Integer): Boolean; 
begin 
    Result := False; 

    if ((PageID=ChoiceUserGroupPage.ID) and ((gsSkipPage<>False) or WizardSilent())) then 
    begin 
    TestUserGroupChoice(ChoiceUserGroupPage); 
    Result := True; 
    Exit; 
    end; 

    if (PageID=ActivateChoicePage.ID) then 
    begin 
     if (VMPIK_IsNeedToSkipChoiceActivationTypePage() = True) then Result := True; 
     Exit; 
    end; 

    if (PageID = EnterSerialNumberPage.ID) then 
    begin 
     if (VMPIK_IsNeedToSkipSerialPage(ActivationType) = True) then Result := True; 
     Exit; 
    end; 

    if (PageID = ChoiceKeyFilePage.ID) then 
    begin 
     if (VMPIK_IsNeedToSkipLicenseKeyFilePage(ActivationType) = True) then Result := True; 
     Exit; 
    end; 
end; 


function NextButtonClick(CurPageID: Integer): Boolean; 
begin 

    Result := True; 

    if (CurPageID=ChoiceUserGroupPage.ID) then 
    begin 
     TestUserGroupChoice(ChoiceUserGroupPage); 
     Exit; 
    end; 

    if (CurPageID=ActivateChoicePage.ID) then 
    begin 
     ActivationType := VMPIK_GetActivationTypeCode(ActivateChoicePage); 
    end; 

    if ((CurPageID=ActivateChoicePage.ID) and ((ActivationType=AM_LATER) or (ActivationType=AM_ALREADY))) then 
     begin 
     Exit; 
     end; 

    if (((CurPageID=ActivateChoicePage.ID) and (ActivationType=AM_TRIAL)) or 
     ((CurPageID=ChoiceKeyFilePage.ID)  and (ActivationType=AM_LICFILE)) or 
     ((CurPageID=EnterSerialNumberPage.ID) and (ActivationType=AM_SERIAL)) or 
     ((CurPageID=wpReady) and (VmpikCommandLineSkipActivationPages<>False)) // silent activation runs immediately before install 
     ) then 
     begin 
     Result := VMPIK_OnNextButtonClick_TryActivate(CurPageID 
                 , VMPIK_ACF_SHARE64FOR32KEY 
                 , 'Software\' + '{#APP_REG_KEY}' 
                 , 'License' 
                 , 'SerialNumber' 
                 , 'Trial' 
                 , 'http://vmpkit.com/' 
                 , ChoiceKeyFilePage.Values[0] 
                ); 
     Exit; 
     end; 

end; 


procedure InitializeWizard(); 
var 
    numParams : Integer; 
    paramNo : Integer; 
    StrParamName: string; 
    StrParamVal: string; 
begin 

    VmpikAppIsActivatedFlag := False; 

    InitializeSerialFormat(VMPIK_SERIAL_FORMAT); 

    ChoiceUserGroupPage := CreateChoiceUserGroupPage(wpLicense); 

    ActivateChoicePage := VMPIK_CreateChoiceActivationPage(wpSelectTasks); // wpWelcome, wpInfoBefore 
    EnterSerialNumberPage := VMPIK_CreateEnterSerialNumberPage(ActivateChoicePage.ID); 
    ChoiceKeyFilePage  := VMPIK_CreateChoiceKeyFilePage(EnterSerialNumberPage.ID); 

    GrpParseCommandLine(ChoiceUserGroupPage); 
    VMPIK_ParseCommandLine(ActivateChoicePage, EnterSerialNumberPage); 
end; 

스크립트는 위의 "사용자 선택"페이지를 보여줍니다 - 모든 설치 또는 현재 사용자 만 설치 한 다음 활성화 페이지를 보여줍니다.

또한 VMPKit Inno 설치 스크립트는 매우 조용한 설정을 지원합니다. 무인 설치를 위해 명령 줄에서 일련 번호를 설정할 수 있습니다.

VMPKit은 멋진 것으로 나타났습니다.