2017-03-01 2 views
-1
# define name of installer 
OutFile "installer.exe" 
SetOverwrite on 
# define installation directory 
InstallDir $DESKTOP 

# For removing Start Menu shortcut in Windows 7 
RequestExecutionLevel Admin 

Section 
    ;StrCpy $INSTDIR "c:\Windows\System32\" 
    SetOutPath $WINDIR\System32\ 
    ;MessageBox MB_OK $WINDIRSetOutPath $WINDIR\System32\ 
    MessageBox MB_OK $SYSDIR 
    File "python27.dll" 
SectionEnd 

Das ist mein Skript ist python27.dll Datei zu windows/system32 Wenn ich laufen diese Datei es tut nichts, oder bin ich etwas worng Dank im Voraus neu nsis tunnsis Datei kann nicht system32 kopieren

zu kopieren
+0

Ich denke nicht, dass dies eine gute Lösung ist, versuchen Sie, den Benutzer über die Voraussetzungen Ihrer App zu informieren und ihn auffordern, die Python-Version für Ihre App zu installieren. Sie können das offizielle Python-Installationsprogramm in Ihr Installationsprogramm aufnehmen, damit der Benutzer es direkt installieren kann, oder Sie können es starten, wenn der Benutzer die Installation überprüft hat. Vergessen Sie nicht, auch zu überprüfen, ob diese Version bereits vorhanden ist oder nicht, oder ob es eine andere Version gibt, die Ihre App ausführen kann. Ich hoffe das hilft. Wenn Sie Ihre Methode folgen müssen: 'Abschnitt "nameofsection" SetOutPath $ SYSDIR File "python27.dll" SectionEnd' – mohessaid

+0

OutFile "installer.exe" SetOverwrite auf # definieren Installationsverzeichnis InstallDir $ DESKTOP # Zum Entfernen Verknüpfung im Startmenü in Windows 7 RequestExecutionLevel Admin ! include MUI2.nsh ! include UAC.nsh # start Standardabschnitt Abschnitt "nameofsection" \t SetOutPath $ SYSDIR \t File "python27.dll" SectionEnd Es tut nichts –

+0

Wie kann ich die offizielle Python-Installation in meinem Skript verwenden, wenn Sie mehr erklären können Neu zu Nsis –

Antwort

0

Auf 64-Bit-Windows gibt es two system32 directories, eine für 32-Bit-.DLLs und eine für 64-Bit-.DLLs. 64-Bit-Programme (einschließlich Explorer) sehen den tatsächlichen Namen des 32-Bit-Verzeichnisses system32; SysWOW64. Das echte Verzeichnisverzeichnis system32 ist vor 32-Bit-Programmen verborgen.

So installieren Sie immer auf den „echten“/native System32 Ordner müssen Sie disable the redirection:

RequestExecutionLevel Admin 
!include x64.nsh 

Section 
SetOutPath $SysDir 

${If} ${RunningX64} 
${DisableX64FSRedirection} 
File "myfiles\64\file.dll" ; Install 64-bit file on 64-bit Windows 
${EnableX64FSRedirection} 

${Else} 

File "myfiles\32\file.dll" ; Install 32-bit file on 32-bit Windows 

${EndIf} 
SectionEnd 

Wenn Ihr .DLL- immer 32-Bit ist dann haben Sie nichts zu tun Besonderes:

RequestExecutionLevel Admin 

Section 
SetOutPath $SysDir 
File "myfiles\file.dll" ; Install 32-bit file 
SectionEnd 

Die Installation Ihrer Dateien in System32 wurde seit fast 20 Jahren abgeraten und Sie sollten wirklich $COMMONFILES oder $PROGRAMFILES\<company name>\Shared Files verwenden.

Stellen Sie sich vor, was passiert if two verschiedene Software-Hersteller entscheiden beide, dass sie Python27.dll in System32 installieren müssen ?! Wenn Sie trotzdem darauf bestehen, sollten Sie mindestens Library.nsh verwenden, um die Datei zu installieren, damit SharedDLLs richtig eingestellt wird.

Verwandte Themen