2016-04-22 5 views
0

さまざまなファイルを指定できる2つの異なる場所にコピーするNSISスクリプトを作成しようとしています。 私はドキュメントと他のStackOverflowエントリをチェックしましたが、解決策は出ていません。 私の問題は、ディレクトリの2番目の変数を定義したいということです。このディレクトリでは、サンプルファイルとプロジェクトがコピーされます。!define MUI_PAGE_DIRECTORY_VARIABLEは変数を作成しません - NSIS

NSIをコンパイルしようとすると、私は次のエラー/警告を得る:ここで

3 warnings: 
    unknown variable/constant "APPDIR" detected, ignoring (C:\Users\max\Desktop\PortablePlayer\so.nsi:29) 
    unknown variable/constant "APPDIR" detected, ignoring (C:\Users\max\Desktop\PortablePlayer\so.nsi:33) 
    unknown variable/constant "APPDIR\Testfile.txt" detected, ignoring (C:\Users\max\Desktop\PortablePlayer\so.nsi:43) 

は、私が使用している私のスクリプトです:

!include "MUI.nsh" 

Name "MyApp" 

OutFile "MyApp-Installer.exe" 
InstallDir "$PROGRAMFILES\My App" 

; Installation Directory for the App 
!insertmacro MUI_PAGE_DIRECTORY 

; Installation Directory for the samples and projects 
!define MUI_PAGE_HEADER_SUBTEXT "Choose your custom Samples Folder" 
!define MUI_DIRECTORYPAGE_TEXT_TOP "To separate your App and your samples and projects you can choose a different folder than the installation directory" 
!define MUI_PAGE_DIRECTORY_VARIABLE $APPDIR 
!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 
    File Testfile.txt 

    SetOutPath $APPDIR 
    File Testfile.txt 

    FileOpen $0 "$DESKTOP\Hello_world.txt" w 
    FileWrite $0 $APPDIR 
    FileClose $0 

    WriteUninstaller "$INSTDIR\MyApp-Uninstaller.exe" 
SectionEnd 

Section "Uninstall" 
    Delete "$INSTDIR\Testfile.txt" 
    Delete "$INSTDIR\MyApp-Uninstaller.exe" 
    RMDir $INSTDIR 
    Delete "$APPDIR\Testfile.txt" 
SectionEnd 

デバッグのために私が値を書き込もうとしました$ APPDIRをテキストファイルに追加しますが、値の代わりに$ APPDIRだけを書きます。 $ INSTDIRに変更すると、$ INSTDIRの正しいパスが表示されます。 $ APPDIRの変数を初期化するにはどうすればよいですか? 上に初期化しようとすると、そこは空ですが、スクリプトが正常にコンパイルされた後にインストーラが失敗します。 NSIS 2.5.1

で勝利7を実行している

誰が間違っているものにいくつかの光を当てるていただけますか?

ありがとうございます!

+0

私はあなたがv2.51ではなくv2.5.1を意味することを願っています:) – Anders

答えて

1

MUI_DIRECTORYPAGE_VARIABLEはあなたが使用するカスタム変数を持っていますが、MUIは、変数を作成していない、あなたのスクリプトの先頭に近いことを自分で行う必要があることをMUIを告げる定義:

Var APPDIR 

だから、

Var APPDIR 
!include "MUI.nsh" 
!define MUI_DIRECTORYPAGE_VARIABLE $APPDIR 
!insertmacro MUI_PAGE_DIRECTORY 
!insertmacro MUI_PAGE_INSTFILES 
!insertmacro MUI_LANGUAGE "English" 

Section 
DetailPrint $APPDIR 
SectionEnd 

編集のようになります:定義の名前は、あなたがあなたの例では持っているようMUI_PAGE_DIRECTORY_VARIABLEないMUI_DIRECTORYPAGE_VARIABLEです...

+0

トップに変数を作成するとコンパイラのエラーは解決されましたが、MUIで使用されていない空の未使用の変数が残っていたことに感謝します – Max

+1

ああ、また、定義に間違った名前を使用した場合、MUI_DIRECTORYPAGE_VARIABLE(接頭辞なし) – Anders

関連する問題