2013-07-17 1 views
0

몇 시간 전에 배포 프로젝트가 올바르게 실행되었습니다. 하지만 갑자기, 내 프로젝트에 두 번째 nsDialogPage을 추가 한 후 더 이상 작동하지 않습니다. 심지어 하나만 사용하는 이전 저장된 코드 nsDialogPage.임시 파일 액세스 문제로 인해 NSIS nsDialogPage가 더 이상 표시되지 않습니까?

이것은 내 코드의 일부입니다.

!include LogicLib.nsh 
!include nsDialogs.nsh 
!include StrRep.nsh 
!include ReplaceInFile.nsh 
!include FileFunc.nsh  
!include TextFunc.nsh 
!insertmacro GetTime 
!include ZipDLL.nsh 

; The name of the installer 
Name "Packaging setup" 

; The file to write 
OutFile "Packaging setup v1.2.3.exe" 

XPStyle on 

Var Dialog 
Var Label 
Var UserText 

; The default installation directory 
InstallDir "C:\temp\setup" 

; Request application privileges for Windows Vista 
RequestExecutionLevel admin 

; Pages 

Page components 
Page directory 
;Page custom nsDialogsPage nsDialogsPageLeave 
Page instfiles 
Page custom nsDialogsPage nsDialogsPageLeave 

UninstPage uninstConfirm 
UninstPage instfiles 

Section "Copy files" 

; Set output path to the installation directory. 
SetOutPath $INSTDIR 

; Copy lot of files 
File "D:\Temp\Sources\parametrage.txt" 
SectionEnd 

Function nsDialogsPage 
nsDialogs::Create 1018 
Pop $Dialog 

${If} $Dialog == error 
    MessageBox MB_OK "Oops something crashed" 
    Abort 
${EndIf} 

;UserName 
${NSD_CreateLabel} 0 0 18% 10u "UserName : " 
Pop $Label 
${ConfigRead} "$INSTDIR\parametrage.txt" "@[email protected] = " $UserText 
${NSD_CreateTExt} 50u 0 50% 12u $UserText 
Pop $UserText 

nsDialogs::Show 
FunctionEnd 

Function nsDialogsPageLeave 
!macro _ReplaceInFile2 SOURCE_FILE SEARCH_TEXT REPLACEMENT 
    Push "${SOURCE_FILE}" 
    Push "${SEARCH_TEXT}" 
    Push "${REPLACEMENT}" 
    Call RIF 
!macroend 

;${ConfigRead} "$INSTDIR\PARAMETRAGE.txt" "@[email protected] = " $0 
${NSD_GetText} $UserText $0 
!insertmacro _ReplaceInFile2 "$INSTDIR\$Version\conf\database.properties" "@[email protected]" $0 

FunctionEnd 

이 코드는 잠시 후 완벽하게 작동합니다. 나는 어떻게되는지 모른다.

현재 파일 복사가 끝나면 설치가 중단되고 nsDialog 양식이 표시되지 않습니다. 는주의 사항 :

  • 내가 파일을 언급하는 경우

    페이지 복사 nsDialog 페이지는 일반적으로
  • 나타납니다 내가 다음 nsDialog 첫째, 다음 복사 페이지 다시 nsDialog를 한 경우 (단지 테스트, 그것은 쓸모가 내 응용 프로그램에서) 첫 번째 nsDialog 양식이 나타나지만 두 번째 양식은 나타나지 않습니다.

${NSD_CreateTExt}에서 온 것 같아서 레이블 (텍스트가 아님)만으로 동일한 작업을 시도했지만 그 결과는 같습니다.

내 파일의 사본이 올바르게 기록됩니다 (기록됩니다).

나는 무엇을 모르기 전에 일하고있었습니다.

아무 결과없이 내 컴퓨터를 다시 시작했습니다.

다른 프로젝트에서 마찬가지로 nsDialog과 관련된 종류의 ".tmp 파일 문제"가 설치 양식에 표시됩니다. 실마리?

모든 조언을 환영합니다. 감사합니다. .

답변

0

나는 맥아피가 최대 보안 설정으로 이것을 보았다. 그들의 보호 중 하나는 임시 디렉토리에서 파일을 실행하는 것입니다.

때때로 문제가 해결 될 수는 있지만 문제 해결에 가치가 있습니다.

+0

좋은 아이디어. 그러나 코드가있는 워크 스테이션은 인터넷에 연결되어 있지 않으므로 (업데이트가 없음), McAfee 일지라도 어떻게 작동했는지 설명 할 수 있습니까? – PetersLast

+0

최신 소식은 최신 버전이 아니라 마지막 버전 중 하나를 의미합니다. 촬영 한 후 AV를 사용하지 않도록 설정하십시오. 확인할 수있을만큼 단순해야합니다. – kichik