3

開発中のゲーム用の最初の Windows インストーラーを開発する準備をしています。NSIS が推奨されていると聞いたことがありますが、私のニーズは基本的なものであり、正確に何が必要なのかわかりません。

「Program Files」ディレクトリにファイルのディレクトリをインストールし (必要に応じて許可を要求)、[スタート] メニューに簡単なショートカットを作成し、[プログラムの追加と削除] コントロール パネルにアンインストーラを登録できる短い NSIS スクリプトが欲しいです。 .

アンインストーラーはディレクトリとショートカットを削除するだけで、ファイルが使用中の場合は再起動を求められます。

最後に、古いファイルをすべてアンインストールして新しいファイルをインストールし、古いファイルが使用されている場合はユーザーに再起動を促すことで、アップグレードをサポートしたいと考えています。

これを少しずつ実行する NSH スクリプトのサンプルをオンラインでいくつか見たことがあります。私はそれを自分でまとめようとしていますが、数百行の長さになりそうです。私のコードは間違った匂いがします。

私が説明しているプログラムは、本当に数百行の NSH であると想定されているのでしょうか? 確かにもっと簡単な方法はありますか?

4

3 に答える 3

7

Eclipse をダウンロードしてから、 EclipseNSIS プラグインを Eclipseにインストールします。これにより、NSIS ファイル用のフル機能のエディター (コード補完など) が提供されるだけでなく、いくつかの質問 (アプリケーションのタイトル、使用するアイコンなど) に答えるだけでスクリプトを作成するウィザードも用意されています。 )。

于 2012-05-22T04:55:26.887 に答える
3

これはかなり近いはずです (私はこのスクリプトをテストしていません) 空白を埋めて、特定の文字列を置き換える必要があります...

!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
于 2012-05-22T06:36:50.283 に答える
2

NSIS の優れたウィザードは HM NIS Edit です。これは、上記の内容を含め、最初のインストーラーをガイドしてくれると思います。

http://hmne.sourceforge.net/

NSIS でアップデーターを提供したい場合は、いくつかのことをお勧めします。

  1. アプリケーションがサーバーからの更新をチェックする方法を作成します。通常は最初のロード時に行われます
  2. 新しいインストーラーをダウンロードして実行します (アプリケーションから、おそらく Web サイトからも誰でも入手できます)。
  3. 古いプログラムが実行されている場合は、シャットダウンする必要があります。NSIS には、プロセスを見つけて強制終了できるプラグインがあります。これはあまり「良い」ことではありませんが、必要になる場合があります。

このプロセスプラグインをお勧めします

使用中の DLL がある場合、単に削除することはできません。ただし、NSIS では、次のように名前を変更し、次の再起動時に削除するようにマークできます。

Delete /REBOOTOK file.txt

次に、新しい DLL をフォルダーにコピーします。

NSIS には、大量のプラグイン、サンプル、および優れたヘルプがありますが、言語の学習には少し時間がかかります。Inno は学習するのがはるかに簡単ですが、核心に到達するとカスタマイズするのが難しくなります。ただし、この 2 つは全体的に同等であり、どちらでも問題なく動作するはずです。

于 2012-09-23T08:24:33.703 に答える