簡體   English   中英

基本安裝的簡單 NSIS 配方

[英]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,它可以指導您完成第一個安裝程序,包括您上面提到的我相信。

http://hmne.sourceforge.net/

如果你想在 NSIS 中提供更新程序,我會推薦一些東西:

  1. 為您的應用程序創建一種檢查服務器更新的方法,通常在首次加載時完成
  2. 下載新的安裝程序並運行它(從您的應用程序,盡管任何人也可以從您的網站獲得它)。
  3. 如果您的舊程序正在運行,您需要將其關閉。 NSIS 有可以找到進程並殺死它的插件。 這不是超級“好”,但可能是必要的。

我推薦這個流程插件

如果您正在使用 DLL,則不能直接刪除它們。 但是,在 NSIS 中,您可以重命名它們,然后將它們標記為在 NEXT 重新啟動時刪除,如下所示:

Delete /REBOOTOK file.txt

然后將新的 DLL 復制到該文件夾中。

對於 NSIS,有大量的插件、示例和很大的幫助,但學習這門語言需要一點時間。 Inno 更容易學習,但當你深入了解細節時更難定制。 但是,我想說這兩者總體上是可比的,並且都應該可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM