2

我有一个使用nuitka编译成exe的python程序:

python -m nuitka --standalone --follow-imports --enable-plugin=qt-plugins --mingw64 rs_main.py

这会在包含许多 dll 和 pyd 的 distfolder 中创建一个 exe。这个exe有效。也在别人的电脑上(当我发送整个 dist 文件夹时)

现在我使用 inno setup 创建了一个安装程序。

#define MyAppName "Test"
#define MyAppVersion "0.1"
#define MyAppPublisher "testcompany"
#define MyAppURL "www.testcompany.nl"
#define MyAppExeName "rs_main.exe"

[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={{65359C01-197B-4EFF-9A75-E048817FD68C}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DisableProgramGroupPage=yes
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; 
GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "D:\Users\user\Documents\1 - Projecten\test\trunk\rs_main.dist\rs_main.exe"; DestDir: "{app}";
Source: "D:\Users\user\Documents\1 - Projecten\test\trunk\rs_main.dist\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; 
Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

这个 inno 安装文件似乎工作正常。它确实创建了一个 setup.exe。运行这个 setup.exe 似乎也可以正常工作。它运行安装程序,我最终得到了 c:\Program Files(x86)\test 中适当文件夹中的所有文件

但是,当我从这个位置运行它时,它不起作用!它崩溃了。

我在某处发现这可能是由于写权限(尽管我不知道我的程序中需要这些权限)。所以我在我的 inno 设置文件中添加了一个肮脏的修复程序(在那里建议):

[Dirs]
Name: {app}; Permissions: users-full

这不起作用(但我做对了吗?)

最后我使用事件查看器来获取更多信息,这告诉我:

Faulting application name: rs_main.exe, version: 0.0.0.0, time stamp: 0x5cb4928c
Faulting module name: python37.dll, version: 3.7.3150.1013, time stamp: 0x5c9954b1
Exception code: 0xc0000005
Fault offset: 0x000000000002324d
Faulting process id: 0x112d8
Faulting application start time: 0x01d4f398767f20e4
Faulting application path: C:\Program Files (x86)\test\rs_main.exe
Faulting module path: C:\Program Files (x86)\test\python37.dll

有谁知道我接下来应该在哪里寻找解决方案?

编辑:正如评论中提到的,我发现这不是一个 inno 设置问题。如果仍然需要,我会尝试其他一些事情并提出一个新问题。

4

0 回答 0