8

NSISインストーラーにx64OSのサポートを追加したいと思います。インストーラーのタスクの1つは、ドライバーのインストールです。このタスク用に特別なNSISプラグインを作成しました。このプラグインは、 Driver Install Frameworks API(DIFxAPI)を使用してドライバーをインストールします。

問題は、このAPIがWOW64で機能しないことです。

NSISでx64インストーラーアプリケーションを作成する方法はありますか?誰かがNSISで同様の問題を解決しましたか?

PS:私が今見ることができる唯一の解決策は、インストーラーから別のアプリケーションを実行することです。これは、ドライバーをインストールするx64実行可能ファイルになります。しかし、この方法は私にはやや難しいようです。だから、私は他の解決策に興味があります。

4

4 に答える 4

13

同様の問題が発生していますが、現時点で唯一の解決策は、CreateProcess を介して別のもの (64 ビット) を実行することだと思います。

このドキュメントには、DPInst ( http://www.microsoft.com/whdc/driver/install/32-64bit_install.mspx ) を使用したソリューションがあるようですが、私はまだ試していません。

他に見つけたものを追加します。

追加: 機能するようになりました。

  1. Windows Driver Kit バージョン 7.1.0 をダウンロード
  2. ISO をマウントし、Full Development Environment->Tools をインストールします。C:\
  3. C:\WinDDK\7600.16385.1\redist\DIFx/dpinst/EngMui/amd64/dpinst.exe にコピーmyApp/drivers/dpinst64.exe
  4. C:\WinDDK\7600.16385.1\redist\DIFx/dpinst/EngMui/x86/dpinst.exeにコピーmyApp/drivers/dpinst32.exe
  5. ドライバー パッケージ (inf ファイルなど) を次の場所にコピーします。myApp/drivers
  6. myApp.nsi追加の先頭へ!include "x64.nsh"
  7. そして、インストールセクションのどこかにmyApp.nsi追加します:

${If} ${RunningX64}
       ExecWait '"$INSTDIR\drivers\dpinst64.exe" /c /q /sa /sw /PATH 
"$INSTDIR\drivers"'
    ${Else}
       ExecWait '"$INSTDIR\drivers\dpinst32.exe" /c /q /sa /sw /PATH 
"$INSTDIR\drivers"'
    ${EndIf}

于 2010-04-30T14:44:34.387 に答える
2

具体的には、INF ファイルを使用して NSIS インストーラーから x64 にファイル システム フィルター ドライバーをインストールしようとしています。

32ビットでは、私は非常に喜んで呼び出すことができます:

ExecWait '$SYSDIR\RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 $INSTDIR\<myinf>.inf'

しかし... x64では、 ${DisableX64FSRedirection} を使用してファイルリダイレクトをオフにしても、WOW64のことを行います...

NSIS から RUNDLL32.EXE を x64 で正しく動作させるには、レジストリ ビューも 64 に設定する必要があることがわかりました。

    ${If} ${RunningX64}
        ${DisableX64FSRedirection}
        SetRegView 64
    ${EndIf}

    ExecWait '$SYSDIR\RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 $INSTDIR\<myinf>.inf'
于 2011-03-22T09:37:55.923 に答える
2

NSIS のネイティブ x64 バージョンはせいぜい計画段階にあるため、新しいヘルパー アプリケーション、または 64 ビット バージョンの rundll32 + 何らかのヘルパー DLL ファイルのいずれかのカスタムを作成する必要があります。

于 2010-03-17T21:03:29.403 に答える
2

参考までに: https://bitbucket.org/dgolub/nsis64

于 2012-06-20T10:01:53.793 に答える