InnoSetup 打包C#项目问题记录

项目场景:

c#项目使用 InnoSetup 打包时遇到的一些问题记录


问题

  1. 用inno setup 打包安装程序时,每次在添加文件夹时是添加了,可是在用打包好的 exe
    安装程序时,每次都会把原来添加的文件夹下的文件直接装在应用程序所在的文件夹里,不会创建对应的子文件夹。

例如我的ai-sim-back是应应用程序文件夹,内有runtimes文件夹存放若干图片,要想安装后图片仍在runtimes文件夹内,

c 复制代码
Source: "G:\ai-sim-back\runtimes\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
	

需要把上面的脚本改成如下,要在 {app} 后添加你的文件夹名:

csharp 复制代码
Source: "G:\ai-sim-back\runtimes\*"; DestDir: "{app}\runtimes"; Flags: ignoreversion recursesubdirs createallsubdirs

  1. 指定桌面快捷方式和快速启动图标

需要在 Icons 下的脚本添加如下脚本 IconFilename: "{app}\icon\logo.ico" ,跟前面的脚本要用分号隔开

csharp 复制代码
[Icons]
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}";IconFilename: "{app}\icon\logo.ico"
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon;IconFilename: "{app}\icon\logo.ico"

  1. 禁止用户更改安装路径,只能使用默认的安装路径

WizardForm.DirEdit.Text := ExpandConstant('{pf}\Simulation'); '{pf}是exe安装所在路径,使用如下脚本,实际是隐藏了选择安装路径的部分。

csharp 复制代码
[Code]
const
  MyAppName = 'Simulation';
  MyAppExeName = 'Simulation.exe';

procedure InitializeWizard;
begin
  // 确保目录选择页面被禁用
  WizardForm.DirEdit.Visible := False;
  WizardForm.FilenameLabel.Visible := False;
  WizardForm.DirBrowseButton.Visible := False;

  // 设置固定的安装路径
  WizardForm.DirEdit.Text := ExpandConstant('{pf}\Simulation');
end;
  1. 添加开机自启动注册表,可以是 exe 也可以是其他文件,不同于服务

解释下方脚本: "SimulationVBS" 是注册表键名

"{app}\run\run_server.vbs" 是要自启动的文件路径,这里是一个 .vbs 文件

注意 :如果想要查看注册表的话,64位的软件和32的软件注册表的路径位置不同,

32位的会在 HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run 里面

64位的会在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 里面

csharp 复制代码
[Registry]
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "SimulationVBS"; ValueData: """wscript.exe"" ""{app}\run\run_server.vbs"""

如果想指定打包的 exe 为64位的可以这样做:

csharp 复制代码
[Setup]
ArchitecturesInstallIn64BitMode=x64 ia64

[Registry]
Root: HKLM64; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "SimulationVBS"; ValueData: """wscript.exe"" ""{app}\run\run_server.vbs"""
相关推荐
不定积分要+C_yyy6 分钟前
Java关键字final三种用法、核心特性与高频易错点
java·开发语言
xexpertS1 小时前
队列积压治理:如何避免异步系统出现难以恢复的消息积压
java·开发语言
benchmark_cc9 小时前
如何用 Python + QuantDash 快速构建高胜率“配对交易(Pairs Trading)”策略?
开发语言·人工智能·python·pandas·量化交易·quantdash
程序员无隅10 小时前
Coding Agent 为什么压缩上下文后还能继续工作?上下文模块设计拆解
java·开发语言·数据库
Python+9910 小时前
Java 枚举类(Enum)详解:从基础到高级应用
java·开发语言·python
二炮手亮子10 小时前
浅记java线程池
java·开发语言
rockey62711 小时前
基于AScript的JavaScript脚本语言发布啦
javascript·c#·.net·js·script
zmzb010311 小时前
C++课后习题训练记录Day157
开发语言·c++
dunge202611 小时前
2026年7月最新ChatGPT Plus / Pro 与 Codex:当 AI Agent 最新5.6版本来袭,必须理解事务、幂等与补偿
开发语言·人工智能·python
LuoCore11 小时前
AForge.Video.FFMPEG.dll加载失败解决指南
c#