Невозможно открыть приложение после того, как установщик Windows (NSIS) сгенерировал приложение - PullRequest
0 голосов
/ 11 октября 2018

Я создал файл UPSTest.NSI.В этот файл я включил требуемые библиотеки dll и exe, как показано ниже, а также добавил необходимые комнады.

File E:\Code\PCPE\Install\pcpe301\Common\ValidateUPS.exe
  File E:\Code\PCPE\Install\pcpe301\Common\drvutil.dll
  File E:\Code\PCPE\Install\pcpe301\Common\ntutil.dll
  File E:\Code\PCPE\Install\pcpe301\Common\pdcdll.dll

Наконец, я загрузил этот файл сценария NSI, он сгенерировал UPSTest.exe

Я запускаю этот UPSTest.exe, и он сгенерировал ниже dll и exes вместе с exe-файлом удаления в пути (\ Program Files \ UPSTest)

drvutil.dll
ntutil.dll
pdcdll.dll
ValidateUPS.exe
uninstall.exe

Но когда я запускаю ValidateUPS.exe, этоне открывается приложение (оно не отвечает)

Ниже приведен полный код: (UPSTest.nsi)

; UPSTest.nsi
;
;
; It will install UPSTest.nsi into a directory that the user selects.

;--------------------------------

; The name of the installer in the path C:\Program Files\UPSTest
Name "UPSTest"

; The file to write  in the path E:\Code\PCPE\NULLSOFT\src
OutFile "UPSTest.exe"

; The default installation directory in the path C:\Program Files\UPSTest
InstallDir $PROGRAMFILES\UPSTest

; Registry key to check for directory (so if you install again, it will
; overwrite the old one automatically) It shows the path the path C:\Program Files\UPSTest
InstallDirRegKey HKLM "Software\NSIS_UPSTest" "Install_Dir"

; Request application privileges for Windows Vista
RequestExecutionLevel admin

;--------------------------------

; Pages

Page components
Page directory
Page instfiles

UninstPage uninstConfirm
UninstPage instfiles

;--------------------------------

; The stuff to install
Section "UPSTest (required)"

  SectionIn RO

  DetailPrint "Testing UPS"

  ; Set output path to the installation directory. Here is the path C:\Program Files\UPSTest
  SetOutPath $INSTDIR

  ; Give the dll and exe path
  File E:\Code\PCPE\Install\pcpe301\Common\ValidateUPS.exe
  File E:\Code\PCPE\Install\pcpe301\Common\drvutil.dll
  File E:\Code\PCPE\Install\pcpe301\Common\ntutil.dll
  File E:\Code\PCPE\Install\pcpe301\Common\pdcdll.dll

  ; Write the installation path into the registry
  WriteRegStr HKLM SOFTWARE\NSIS_UPSTest "Install_Dir" "$INSTDIR"

  ; Write the uninstall keys for Windows
  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\UPSTest" "DisplayName" "NSIS UPSTest"
  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\UPSTest" "UninstallString" '"$INSTDIR\uninstall.exe"'
  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\UPSTest" "NoModify" 1
  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\UPSTest" "NoRepair" 1
  WriteUninstaller "uninstall.exe"

SectionEnd

; Optional section (can be disabled by the user)
Section "Start Menu Shortcuts"

  CreateDirectory "$SMPROGRAMS\UPSTest"
  CreateShortcut "$SMPROGRAMS\UPSTest\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
  CreateShortcut "$SMPROGRAMS\UPSTest\UPSTest (MakeNSISW).lnk" "$INSTDIR\UPSTest.nsi" "" "$INSTDIR\UPSTest.nsi" 0

SectionEnd

;--------------------------------

; Uninstaller

Section "Uninstall"

  ; Remove registry keys
  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\UPSTest"
  DeleteRegKey HKLM SOFTWARE\NSIS_UPSTest

  ; Remove files and uninstaller
  Delete $INSTDIR\UPSTest.nsi
  Delete $INSTDIR\uninstall.exe

  ; Remove shortcuts, if any
  Delete "$SMPROGRAMS\UPSTest\*.*"

  ; Remove directories used
  RMDir "$SMPROGRAMS\UPSTest"
  RMDir "$INSTDIR"

SectionEnd

Пожалуйста, дайте мне знать, что я пропустил.А также нужно ли что-нибудь добавить для запуска приложения?Пожалуйста, предложите, если есть какие-либо изменения из предоставленного мною текстового скрипта .nsi.

1 Ответ

0 голосов
/ 12 октября 2018

Ваш CreateShortcut вызов неверный, он указывает на файл .nsi.Он должен указывать на $InstDir\ValidateUps.exe.

Ваш вызов Delete также неверен, удаление .nsi не имеет смысла, он должен удалять ваши файлы .exe и .dll.

NSIS долженне имеет значения, работает ли ваше приложение или нет, проблема, скорее всего, где-то еще.Возможно, вам нужно зарегистрировать файлы .dll или другие изменения конфигурации.

...