NSIS nsDialogPage больше не отображаются из-за проблемы с доступом к временным файлам?

Несколько часов назад мой проект развертывания работал правильно. Но вдруг, после того, как я добавляю секунду nsDialogPage на моем проекте, он больше не работает. Даже старый сохраненный код только с одним 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" "@DERBY_USER@ = " $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" "@DERBY_USER@ = " $0
${NSD_GetText} $UserText $0
!insertmacro _ReplaceInFile2 "$INSTDIR\$Version\conf\database.properties" "@DERBY_USER@" $0

FunctionEnd

Этот код работал безупречно до момента. Я не знаю, что происходит.

В настоящее время установка остановлена ​​после копирования файлов и не отображает форму nsDialog. Замечать:

  • Если я прокомментирую страницу копирования файлов, nsDialog Страницы отображаются нормально
  • Если я сделаю nsDialog сначала страница копирования, затем nsDialog снова (просто для проверки, это бесполезно в моем приложении), первый nsDialog форма появляется, но не вторая.

Я думал, что это исходит от ${NSD_CreateTExt} поэтому я попробовал то же самое действие только с надписью (не с текстом), и результат тот же.

Копия моих файлов правильно заполнена (она зарегистрирована).

И это работало, прежде чем я не знаю что.

Я перезапустил свою машину, без какого-либо результата.

В другом проекте, аналогичном тому же, "проблема с файлом.tmp", связанная с nsDialog отображается в форме настройки. Ключ?

Любой совет приветствуется. Благодарю.

1 ответ

Я видел, как McAfee вызывает это с максимальными настройками безопасности. Одна из их защит - от выполнения файлов из временного каталога.

Это не совсем соответствует вашей проблеме, так как иногда это работает для вас, но стоит попробовать.

Другие вопросы по тегам