InnoSetup에 의해 생성되는 설치 중에 파이썬 스크립트를 실행하려고했지만 아무 것도 작동하지 않습니다. 실행 섹션 또는 코드에서 실행 섹션 결과 코드는 호출 방식에 따라 다릅니다.innoSetup으로 python 스크립트를 실행하는 방법
물론 아직 설치되지 않은 경우 설치 중에 Python을 설치합니다. Exec을하지만 방법 : 여기에 이노
[Setup]
AppName=PyPy_client
AppVersion=0.1
DefaultDirName={pf}\DeployPyPy
UninstallDisplayIcon={app}\test.py
Compression = zip/1
OutputDir=deploy
SetupLogging = yes
UsePreviousGroup=False
DisableProgramGroupPage=yes
PrivilegesRequired = admin
[Files]
Source: "D:\Dev\deploy_python\python-3.3.2.msi"; DestDir: "{app}\deploy"; Flags: ignoreversion
Source: "D:\Dev\deploy_python\test.py"; DestDir: "{app}"; Flags: ignoreversion
[Run]
Filename: "msiexec"; Parameters: "/i ""{app}\deploy\python-3.3.2.msi"" /qb! ALLUSER=1 ADDLOCAL=ALL"; WorkingDir: "{app}\deploy"; Flags: 32bit; Check: python_is_installed
Filename: "cmd.exe"; Parameters: "/c{code:GetPythonPath}\python.exe {app}\test.py"; WorkingDir: "{app}"; Flags: waituntilterminated
[Code]
function python_is_installed() : Boolean;
var
key : string;
begin
//check registry
key := 'software\Python\PythonCore\3.3\InstallPath'
Result := not RegValueExists(HKEY_LOCAL_MACHINE,Key,'');
end;
function GetPythonPath(Param : String) : String;
var dir, key : String;
begin
dir := '';
key := 'software\Python\PythonCore\3.3\InstallPath'
RegQueryStringValue(HKEY_LOCAL_MACHINE,key,'',dir);
Result := dir
end;
procedure DeinitializeSetup();
var
ResultCode: integer;
begin
if Exec('cmd.exe', ExpandConstant('/c' +GetPythonPath('')+ '\python.exe {app}\test.py'), '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
Log(intTostr(Resultcode));
end;
내가 직접 사용하는 실행 섹션과 코드에서 python.exe를 시도 테스트 코드입니다.
그리고 나는 그것이 작동하는 Windows 명령 줄 및 cmd.exe를 /cC:\python33\python.exe C에서 test.py 입력하면 물론 : \는 \ test.py도
는누군가가 이미 SUCCES 응용 프로그램 innosetup으로 파이썬 스크립트 사용하기?
이 기능의 목적은 설치 프로세스 중에 python 파일을 사용하여 배포하는 것이 아니라 물건을 만들기 위해서입니다.
가 지금은 스크립트의 EXE를 만들기 위해 CXfreeeze를 사용하여 '해요하지만 난 단지 파이썬 스크립트를 유지하고 정보 파이썬 테스트 스크립트에 대한
(automatisation 목적) exe 인하지 선호하는 단지입니다 :
import ctypes
def msgbox(message,title):
ctypes.windll.user32.MessageBoxW(0, message, title, 0)
def debug() :
msgbox('test','test test')
debug()
EDIT *
@Tlama 난 [실행]에서 명령을 사용하는 시도 주듯이 대신 관리 이노가 걸렸고 모드 (I는 PrivilegesRequired = admin을 사용하여 M)하지만의 OriginalUser를 사용 작동하지 않습니다.
그리고 모든 사용자가 명령 줄을 사용하여 Python을 설치하면 ALLUSERS = 1 기존 사용자 (또는 관리자)가 python 스크립트를 실행할 수 있습니다.
는 나는 또한 [실행]과 코드에 WorkingDir을 수정하려고:
Log('Start pypy 1');
Exec('cmd.exe', ExpandConstant('/c' +GetPythonPath('')+ '\python.exe {app}\test.py'), GetPythonPath(''), SW_SHOW, ewWaitUntilTerminated, ResultCode);
Log(intToStr(Resultcode));
Log('Start pypy 2');
Exec(GetPythonPath('')+ '\python.exe', ExpandConstant('{app}\test.py'), GetPythonPath(''), SW_SHOW, ewWaitUntilTerminated, ResultCode);
Log(intToStr(Resultcode));
Log('Start pypy 3');
Exec('cmd.exe', ExpandConstant('/c' +GetPythonPath('')+ '\python.exe {app}\test.py'),ExpandConstant('{app}'), SW_SHOW, ewWaitUntilTerminated, ResultCode);
Log(intToStr(Resultcode));
예 : "python.exe" "C : \ pyhton33 \ pyhton.exe test.py"스크립트 만 (파이썬은 .py는 python.exe에 링크 됨) "test.py" 아무것도 작동하지 않습니다. – user2819873
도움 주셔서 감사합니다! originalUser를 사용해 보았지만 효과가 없습니다. 나는 언급하지는 않았지만 몇 가지 작업 디렉토리 (pyhton one, app one ..)를 시도했지만 아무런 효과가 없다. 나는 그것이 파이썬과 관련이 있다고 생각하지만 이것은 정말로 이상하다. – user2819873
Ok, 나는 수년간 Inno를 사용하지만 이번에는 정말로 붙어있다. – user2819873