0

システムの起動時にコマンドを実行するために、コンピューターの GPO にエントリを追加する NSIS を使用するインストーラーを作成中です。

# From http://nsis.sourceforge.net/LGP_Startup/Shutdown_Script
!include LGPScript.nsh

Section
  SetOutPath -

  # Install all files from myprog directory into C:\Program Files\myprog
  File myprog\*

  # Copy mysystweak.bat to System32\GroupPolicy\Machine\Scripts\Startup
  SetOutPath $SYSDIR\GroupPolicy\Machine\Scripts\Startup
  File myprog\mysystweak.bat
  SetOutPath -

  # Add GPO entry to execute mysystweak.bat on startup
  ${LGPScript::Create} 'Startup' 'mysystweak.bat' '' $R1
  DetailPrint "Create startup LGP return code:$R1"

  # Write uninstaller
  Writeuninstaller "${uninstall_name}"
SectionEnd

…\Startup に何も表示されないことを除けば、すべてうまくいきます。インストーラーは、すべてが機能したと考えています。

Output folder: C:\WINDOWS\system32\GroupPolicy\Machine\Scripts\Startup
Extract: mysystweak.bat... 100%
Output folder: C:\Program Files (x86)\myprog

最初に、CopyFiles を使用して $INSTDIR から …\Startup にバッチ ファイルをコピーしようとしましたが、同じ結果が得られました。

ここで何がうまくいかないのですか?

関連: https://serverfault.com/q/266338/2101

4

1 に答える 1

1

これが x64 システムの場合は、FS リダイレクトを無効にする必要があります。無効にしないと、$SYSDIR は真の system32 ディレクトリを指しません。

!include x64.nsh

Section
...
SetOutPath $SYSDIR\GroupPolicy\Machine\Scripts\Startup
${DisableX64FSRedirection}
File myprog\mysystweak.bat
${EnableX64FSRedirection}
...
SectionEnd

Process Monitorでインストーラーを監視することで、これが問題であることを確認できます。

于 2011-05-05T16:25:17.770 に答える