2017-03-01 7 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 

にファイルをコピーすることができない/ system32に 私はそれが何もしないか、私はNSISNSISこれは、Windowsにpython27.dllファイルをコピーするために私のスクリプトですsystem32に

に新しい事前に おかげworng何かをやって、このファイルを実行すると、
+0

私はこれが良い解決策だとは思わない、あなたのアプリの前提条件についてユーザに知らせ、あなたのアプリに適したPythonバージョンをインストールするように促す。インストーラに公式のpythonインストーラを含めて、ユーザが直接インストールできるようにするか、またはユーザがインストールをチェックした場合に起動することができます。このバージョンがすでに存在するかどうか、またはアプリを実行できる他のバージョンがあるかどうかを確認することも忘れないでください。この助けを願っています。 あなたの方法に従う必要がある場合: '節 "nameofsection" SetOutPath $ SYSDIRファイル "python27.dllを" SectionEnd' – mohessaid

+0

OUTFILE #インストールディレクトリを定義 インストールディレクトリ$ DESKTOP #上 SetOverwrite "installer.exeの" 除去するためWindowsのメニューショートカットを起動7 RequestExecutionLevel管理 !MUI2.nsh 含ん! 節 "nameofsection" UAC.nsh #開始デフォルトのセクションが含まれ \t SetOutPath $ SYSDIRは \tファイル "python27.dll" SectionEnd それは何もしません –

+0

あなたがもっと説明できるならば、私はあなたのスクリプトに公式のpythonをインストールする方法を教えてください nsisに新しくなりました –

答えて

0

64ビットWindowsでは、two system32 directoriesがあり、1つは32ビットの.DLL、もう1つは64ビットの.DLLです。 64ビットプログラム(エクスプローラを含む)は、32ビットのsystem32ディレクトリの実際の名前を表示します。 SysWOW64。実際のsystem32ディレクトリディレクトリは、32ビットプログラムから隠されています。あなたの.DLLは、32ビット、あなたは特別な何もする必要はありません常にある場合

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 

常にあなたが disable the redirectionに必要な「本物の」/ネイティブsystem32フォルダにインストールするには

RequestExecutionLevel Admin 

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

system32にファイルをインストールすることは20年近くはお勧めできませんでした。実際には$COMMONFILESまたは$PROGRAMFILES\<company name>\Shared Filesを使用してください。

何が起こるか想像してくださいif two異なるソフトウェアベンダーはどちらも、python27.dllをsystem32にインストールする必要があると判断していますか?それでもこのことを主張すれば、少なくともLibrary.nshを使用してファイルをインストールしてください。SharedDLLsは正しく設定されています。

関連する問題