You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

InnoSetup打包后可执行文件出现‘Failed to execute script’错误排查

问题分析与解决方案

首先,这个「Failed to execute script」错误大概率是权限不足导致的,结合你的场景,具体原因和解决办法如下:

核心原因

当你通过Inno Setup将程序安装到默认的{autopf}\{#MyAppName}目录(通常是C:\Program Files\testApp)时,这个目录属于系统级保护目录,普通用户没有直接写入文件的权限。而你的Python脚本尝试在exe所在目录创建test.txt,这就触发了系统的权限限制,导致脚本执行失败。

直接运行exe时没问题,是因为你运行的是桌面dist目录里的文件,这个路径属于用户完全可控的范围,所以写入操作能正常完成。

另外你的Inno Setup脚本里AppId定义少了一个闭合的},应该改成AppId={{3D8E37F3-FB32-4AF9-8C64-58C37D542248}},虽然这不是当前报错的直接原因,但会影响安装程序的唯一标识,建议修正。

解决方案

你可以从以下几个方向解决问题:

1. 修改Python脚本,将文件写入用户可写目录

不要在程序安装目录创建文件,而是写到用户专属的可写路径,比如「我的文档」或「AppData」目录。修改后的脚本示例:

import os, sys
test_str = "test"
# 写入到用户文档目录
user_doc_dir = os.path.expanduser("~/Documents")
path_w = os.path.join(user_doc_dir, 'test.txt')
with open(path_w, mode='w') as f:
    f.write(test_str)

如果想把文件放到程序专属的用户目录,也可以用AppData路径:

import os, sys
test_str = "test"
# 获取用户AppData目录并创建程序专属文件夹
user_appdata_dir = os.getenv('APPDATA')
app_dir = os.path.join(user_appdata_dir, 'testApp')
os.makedirs(app_dir, exist_ok=True)
path_w = os.path.join(app_dir, 'test.txt')
with open(path_w, mode='w') as f:
    f.write(test_str)

2. 修改Inno Setup配置,让程序安装到用户可写目录

把DefaultDirName改成用户专属路径,比如:

DefaultDirName={userdocs}\{#MyAppName}

或者:

DefaultDirName={userappdata}\{#MyAppName}

这样安装后的目录就属于用户完全可控的范围,脚本就能正常创建文件了。

3. 给安装目录添加写入权限(不推荐)

这种方式会带来安全风险,不建议采用,但如果一定要尝试,可以在Inno Setup脚本中添加[Dirs]段:

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

内容的提问来源于stack exchange,提问作者taichi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 09:59:10