1

インストールスクリプトを作成しようとしています:

  • 32 ビット PC の場合: tapi_32bits.tsp 内C:\windows\system32
  • 64 ビット PC の場合: tapi_64bits.tsp inC:\Windows\System32および tapi_32bits.tsp inC:\Windows\SysWOW64

これは私が書いたスクリプトです:

; The name of the installer
Name "TAPI Installer"

; The file to write
OutFile "TAPI Installer"

; The default installation directory
InstallDir $DESKTOP

;--------------------------------

; Install to the correct directory on 32 bit or 64 bit machines
Section
IfFileExists $WINDIR\SYSWOW64\*.* Is64bit Is32bit
Is32bit:
    ; Set output path to the installation directory.
    SetOutPath $SYSDIR

    ; Put file there
    File tapi_32bits.tsp

;   SectionEnd MessageBox MB_OK "32 bit"
        SetRegView 32
        StrCpy $INSTDIR "$PROGRAMFILES32\LANDesk\Health Check"
    GOTO End32Bitvs64BitCheck

Is64bit:
    ; install in  C:\Windows\System32
    SetOutPath $WINDIR\System32\

    ; file to put there
    File tapi_64bits.tsp

    ; install in C:\Windows\SysWOW64
    SetOutPath $WINDIR\SysWOW64

    ; file to put there
    File tapi_32bits.tsp


    ;SectionEnd MessageBox MB_OK "32 bit"
        SetRegView 32
        StrCpy $INSTDIR "$PROGRAMFILES32\LANDesk\Health Check"
        GOTO End32Bitvs64BitCheck    
    MessageBox MB_OK "64 bit"
        SetRegView 64
        StrCpy $INSTDIR "$PROGRAMFILES64\LANDesk\Health Check"

End32Bitvs64BitCheck:
SectionEnd
;--------------------------------

ただし、64 ビット PC では、両方のファイル (tapi_64bits.tsp と tapi_32bits.tsp) が Syswow64 フォルダーに配置されます。インストーラーは、正しいフォルダーにインストールされていると言っていますが、両方のファイルが Syswow64 フォルダーにあります。私は何を間違っていますか?

4

2 に答える 2

5

NSIS は 32 ビット アプリケーションであるため、ファイル リダイレクトの影響を受けます。

x64.nsh を使用する必要があります。WOW64を検出してリダイレクトを無効にするコードが含まれています (できるだけ早く有効に戻してください)。もう 1 つの方法は抽出する$windir\sysnativeことですが、これはよりハックであり、XP 64 では機能しません。

于 2012-05-25T20:06:02.090 に答える
0

次のコードは機能するはずです。

!include x64.nsh    
; Install to the correct directory on 32 bit or 64 bit machines
Section
${If} ${RunningX64}
; install in  C:\Windows\System32
SetOutPath $WINDIR\System32\

; file to put there
File tapi_64bits.tsp

; install in C:\Windows\SysWOW64
SetOutPath $WINDIR\SysWOW64

; file to put there
File tapi_32bits.tsp
${Else}
; Set output path to the installation directory.
SetOutPath $SYSDIR
; Put file there
File tapi_32bits.tsp
${EndIf}
SectionEnd
于 2014-04-01T17:09:17.243 に答える