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 вызывает это с максимальными настройками безопасности. Одна из их защит - от выполнения файлов из временного каталога.
Это не совсем соответствует вашей проблеме, так как иногда это работает для вас, но стоит попробовать.