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"""
相关推荐
qq_195551697 分钟前
代码随想录70期day3
开发语言·python
XXYBMOOO13 分钟前
Qt UDP 通信类详解与实现
开发语言·网络·c++·qt·网络协议·ui·udp
pusue_the_sun17 分钟前
C语言强化训练(12)
c语言·开发语言·算法
counting money1 小时前
JAVA泛型基础
java·开发语言·eclipse
007php0071 小时前
Go语言面试:传值与传引用的区别及选择指南
java·开发语言·后端·算法·面试·golang·xcode
XerCis1 小时前
Python的RSS/Atom源解析库feedparser
开发语言·python
algonaut1 小时前
adobe acrobat 安装到使用再到PDF编辑【适合小白,只看一篇就够!!!】
java·开发语言·其他·pdf
boonya2 小时前
Java JVM核心原理与面试题解析
java·开发语言·jvm
魔都吴所谓2 小时前
【Python】根据开始时间、结束时间计算中间时间
开发语言·windows·python