Skip to main content
 首页 » 编程设计

使用 Inno Setup 的 Python 分发模块

2025年05月04日9yyy_WW

是否可以分发我使用 Inno Setup 而不是 Python distutils 创建的 Python 库?我说的是 distutils Windows 安装程序。如果是这样,如何?这些模块位于 https://code.google.com/p/mathworks/ .

编辑: 我在大量谷歌搜索方面取得了一些进展。这是我的设置脚本,但找不到 Python。也许有人可以提供帮助。

; 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; 

我从 Inno Setup - Setting DefaultDir using wildcard registry entry? 得到代码和 Inno Setup: How to Abort/Terminate Setup During Install? .

请您参考如下方法:

我想通了!我的代码:

#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;