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"""
相关推荐
xlq223225 小时前
22.多态(上)
开发语言·c++·算法
666HZ6665 小时前
C语言——高精度加法
c语言·开发语言·算法
热心市民☆5 小时前
C#基础语法
c#
rainmanqqst5 小时前
C#Netcore支持Https
网络协议·http·https·c#
星释5 小时前
Rust 练习册 100:音乐音阶生成器
开发语言·后端·rust
风生u6 小时前
go进阶语法
开发语言·后端·golang
666HZ6666 小时前
C语言——黑店
c语言·开发语言
Gomiko6 小时前
JavaScript基础(八):函数
开发语言·javascript·ecmascript
〝七夜5696 小时前
JVM内存结构
java·开发语言·jvm
初级炼丹师(爱说实话版)6 小时前
JAVA泛型作用域与静态方法泛型使用笔记
java·开发语言·笔记