Frage

Ich möchte, Unterstützung für x64-Betriebssysteme auf meinem NSIS-Installer. Eine der Aufgaben der Installer ist Treiber-Installation. Ich habe ein spezielles NSIS-Plugin für diese Aufgabe geschrieben. Dieses Plugin verwendet Treiber installieren Frameworks API (DIFxAPI) Treiber zu installieren.

Das Problem ist, dass diese API funktioniert nicht in WOW64.

Gibt es eine Möglichkeit x64-Installationsprogramm mit NSIS zu schaffen? Hat jemand gelöst ähnliches Problem mit NSIS?

P. S .: Die einzige Lösung, die ich jetzt sehen kann, ist eine andere Anwendung vom Installationsprogramm zu starten. Dies wird x64 ausführbare Datei, die Treiber installiert. Aber auf diese Weise scheint etwas härter zu mir. Also, ich bin in anderen Lösungen interessiert.

War es hilfreich?

Lösung

Ich bin ein ähnliches Problem zu begegnen, und ich denke, dass die einzige Lösung ist im Moment etwas anderes (64bit) über Create auszuführen.

Dieses Dokument erscheint, eine Lösung zu haben, mit DPInst ( http: // www.microsoft.com/whdc/driver/install/32-64bit_install.mspx ), obwohl ich habe es selbst noch nicht ausprobiert.

Wird etwas hinzufügen, was ich finden.

Zusätzlich: Habe es jetzt an der Arbeit, läuft darauf hinaus,

  1. Download Windows Driver Kit Version 7.1.0
  2. Montieren Sie die ISO und installieren Full Development Environment-> Werkzeuge zu C:\
  3. Kopieren C:\WinDDK\7600.16385.1\redist\DIFx/dpinst/EngMui/amd64/dpinst.exe zu myApp/drivers/dpinst64.exe
  4. Kopieren C:\WinDDK\7600.16385.1\redist\DIFx/dpinst/EngMui/x86/dpinst.exe zu myApp/drivers/dpinst32.exe
  5. Kopieren Sie die Treiberpaket (INF-Datei usw.) myApp/drivers
  6. Nach oben von myApp.nsi add !include "x64.nsh"
  7. Und irgendwo im Installationsabschnitt in myApp.nsi add:

${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}

Andere Tipps

Eine native x64-Version von NSIS ist in der Planungsphase im besten Fall, so dass Sie etwas benutzerdefinierten erstellen müssen, entweder ein neues Hilfsprogramm oder eine 64-Bit-Version rundll32 + eine Art Helfer DLL-Datei.

Ich versuche, speziell ein Dateisystem-Filtertreiber auf x64 von der NSIS zu installieren Installationsprogramm eine INF-Datei.

Auf 32 Bit kann ich ganz glücklich nennen:

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

Aber ... auf x64 sogar mit der Datei Umleitung ausgeschaltet $ mit {} DisableX64FSRedirection es immer noch tut eine WOW64 Sache ...

fand ich, dass RUNDLL32.EXE an der Arbeit richtig auf x64 von NSIS zu erhalten, müssen Sie auch die Registrierung Ansicht verwendet 64 als auch zu sein:

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

    ExecWait '$SYSDIR\RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 $INSTDIR\<myinf>.inf'
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top