[英]Simple NSIS recipe for basic installation
我正准備為我正在開發的游戲開發我的第一個 Windows 安裝程序。 我聽說過 NSIS 推薦,但我的需求很基本,我無法弄清楚到底需要什么。
我想要一個簡短的 NSIS 腳本,它可以在“程序文件”目錄中安裝一個文件目錄(必要時請求權限),在“開始”菜單中創建一個簡單的快捷方式,並在“添加/刪除程序”控制面板中注冊一個卸載程序.
卸載程序只會刪除目錄並刪除快捷方式,如果文件正在使用,則會提示重新啟動。
最后,我想通過卸載所有舊文件並安裝新文件來支持升級,如果舊文件正在使用,提示用戶重新啟動。
我在網上看到了一些示例 NSH 腳本,這些腳本會做一些零碎的事情; 我正在嘗試自己將它吊在一起,看起來它會有數百行。 我的代碼聞起來像是錯誤的東西。
我描述的程序真的應該是數百行 NSH 嗎? 當然有更簡單的方法嗎?
下載 Eclipse ,然后將EclipseNSIS 插件安裝到 Eclipse 中。 這不僅為您提供了一個功能齊全的 NSIS 文件編輯器(具有代碼完成等),而且還有一個向導可以通過回答一些問題(應用程序標題、要使用的圖標、... ).
這應該非常接近(我沒有測試這個腳本)你應該填寫空白並替換某些字符串......
!define Name "Foo"
Name "${Name}"
Outfile "${Name} setup.exe"
RequestExecutionLevel admin ;Require admin rights on NT6+ (When UAC is turned on)
InstallDir "$ProgramFiles\${Name}"
!include LogicLib.nsh
!include MUI.nsh
Function .onInit
SetShellVarContext all
UserInfo::GetAccountType
pop $0
${If} $0 != "admin" ;Require admin rights on NT4+
MessageBox mb_iconstop "Administrator rights required!"
SetErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
Quit
${EndIf}
FunctionEnd
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
Section
SetOutPath "$INSTDIR"
WriteUninstaller "$INSTDIR\Uninstall.exe"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Foo By Bar Inc." "DisplayName" "${Name}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Foo By Bar Inc." "UninstallString" "$INSTDIR\Uninstall.exe"
;TODO: Install your files with the File command
CreateShortCut "$SMPROGRAMS\${Name}.lnk" "$INSTDIR\Foo.exe"
SectionEnd
Section "Uninstall"
;TODO: Delete your files
Delete "$SMPROGRAMS\${Name}.lnk"
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Foo By Bar Inc."
Delete "$INSTDIR\Uninstall.exe"
RMDir "$INSTDIR"
SectionEnd
NSIS 的一個很棒的向導是 HM NIS Edit,它可以指導您完成第一個安裝程序,包括您上面提到的我相信。
如果你想在 NSIS 中提供更新程序,我會推薦一些東西:
如果您正在使用 DLL,則不能直接刪除它們。 但是,在 NSIS 中,您可以重命名它們,然后將它們標記為在 NEXT 重新啟動時刪除,如下所示:
Delete /REBOOTOK file.txt
然后將新的 DLL 復制到該文件夾中。
對於 NSIS,有大量的插件、示例和很大的幫助,但學習這門語言需要一點時間。 Inno 更容易學習,但當你深入了解細節時更難定制。 但是,我想說這兩者總體上是可比的,並且都應該可以正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.