[英]Python Distribute Module using Inno Setup
Is it possible to distribute a Python library I made using Inno Setup instead of Python distutils? 是否可以分发使用Inno Setup而非Python distutils创建的Python库? I am talking about the distutils Windows installers. 我说的是distutils Windows安装程序。 If so, how? 如果是这样,怎么办? The modules are at https://code.google.com/p/mathworks/ . 这些模块位于https://code.google.com/p/mathworks/ 。
EDIT: I have made some progress with lots of Googling. 编辑:我在使用Googling取得了一些进展。 Here is my setup script, but it can't locate Python. 这是我的设置脚本,但是找不到Python。 maybe somebody can help. 也许有人可以帮忙。
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{3B6685C2-D478-4410-B973-57FA36A6DA6D}
AppName=Mathworks
AppVersion=1.3
;AppVerName=Mathworks 1.3
AppPublisherURL=https://code.google.com/p/mathworks/
AppSupportURL=https://code.google.com/p/mathworks/
AppUpdatesURL=https://code.google.com/p/mathworks/
DefaultDirName={code:GetDirName}
DisableDirPage=yes
DefaultGroupName=My Program
DisableProgramGroupPage=yes
LicenseFile=C:\Users\Ryan\Documents\mathworks-git\LICENSE_1_0.txt
OutputDir=C:\Users\Ryan\Desktop
OutputBaseFilename=mathworks-mwver
Compression=lzma
SolidCompression=yes
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
[Files]
Source: "C:\Users\Ryan\Documents\mathworks-git\__init__.py"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\Ryan\Documents\mathworks-git\exponent.py"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\Ryan\Documents\mathworks-git\LICENSE_1_0.txt"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\Ryan\Documents\mathworks-git\multiples.py"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\Ryan\Documents\mathworks-git\ptheorem.py"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\Ryan\Documents\mathworks-git\shapes.py"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Code]
var CancelWithoutPrompt: boolean;
function InitializeSetup() : Boolean;
begin
CancelWithoutPrompt := false;
result := true;
end;
function GetDirName(Value: string): string;
var
InstallPath: string;
begin
if RegQueryStringValue(HKLM, 'SOFTWARE\Python\PythonCore\2.7\InstallPath', '(Default)', InstallPath) then
BEGIN
Result := InstallPath
END else
if RegQueryStringValue(HKCU, 'SOFTWARE\Python\PythonCore\2.7\InstallPath', '(Default)', InstallPath) then
BEGIN
Result := InstallPath;
END else
if RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Python\PythonCore\2.7', '(Default)', InstallPath) then
BEGIN
Result := InstallPath;
END else
MsgBox('Could not find Python',mbError,MB_OK);
CancelWithoutPrompt := true;
WizardForm.Close;
end;
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
if CurPageID=wpInstalling then
Confirm := not CancelWithoutPrompt;
end;
I got the code from Inno Setup - Setting DefaultDir using wildcard registry entry? 我从Inno设置-使用通配符注册表项设置DefaultDir获得了代码? and Inno Setup: How to Abort/Terminate Setup During Install? 和Inno Setup:如何在安装过程中中止/终止安装? . 。
I figured it out! 我想到了! My code: 我的代码:
#define AppName "Mathworks"
#define AppDir "mathworks"
#define PyVer "2.7"
#define AppVer "1.3:
[Setup]
AppId={{3B6685C2-D478-4410-B973-57FA36A6DA6D}
AppName={#AppName}
AppVersion={#AppVer}
AppVerName=Mathworks {#AppVer}
AppPublisherURL=https://code.google.com/p/mathworks/
AppSupportURL=https://code.google.com/p/mathworks/
AppUpdatesURL=https://code.google.com/p/mathworks/
DefaultDirName={code:GetDirName}
DefaultGroupName={#AppName}
DisableProgramGroupPage=yes
LicenseFile=C:\Users\Ryan\Documents\mathworks-git\LICENSE_1_0.txt
OutputDir=C:\Users\Ryan\Desktop\Inno Setup
OutputBaseFilename=mathworks-{#AppVer}-python-{#PyVer}
Compression=lzma
SolidCompression=yes
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
[Files]
Source: "C:\Users\Ryan\Documents\mathworks-git\__init__.py"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\Ryan\Documents\mathworks-git\exponent.py"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\Ryan\Documents\mathworks-git\LICENSE_1_0.txt"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\Ryan\Documents\mathworks-git\multiples.py"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\Ryan\Documents\mathworks-git\ptheorem.py"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\Ryan\Documents\mathworks-git\shapes.py"; DestDir: "{app}"; Flags: ignoreversion
[Code]
procedure ExitProcess(exitCode:integer);
external 'ExitProcess@kernel32.dll stdcall';
function GetDirName(Value: string): string;
var
InstallPath: string;
reg1 : string;
reg2 : string;
begin
reg1 := 'SOFTWARE\Python\PythonCore\' + '{#PyVer}' + '\InstallPath';
reg2 := 'SOFTWARE\Python\PythonCore\Wow6432Node\' + '{#PyVer}' + '\InstallPath';
if RegQueryStringValue(HKLM, reg1, '', InstallPath) then
BEGIN
Result := InstallPath + 'Lib\site-packages\' + '{#AppDir}';
END else
if RegQueryStringValue(HKCU, reg1, '', InstallPath) then
BEGIN
Result := InstallPath + 'Lib\site-packages\' + '{#AppDir}';
END else
if RegQueryStringValue(HKLM, reg2, '', InstallPath) then
BEGIN
Result := InstallPath + 'Lib\site-packages\' + '{#AppDir}';
END else
BEGIN
MsgBox('Could not find Python',mbError,MB_OK);
ExitProcess(1);
END
end;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.