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"""
相关推荐
叼烟扛炮8 小时前
Linux 学习笔记(四十三):网络编程进阶——自定义协议解决 TCP 粘包与守护进程
linux·开发语言·网络·笔记·tcp/ip
LMT流氓兔9 小时前
第五单元——第十六课:给书店助手加上网页界面
java·开发语言·jvm·人工智能·oracle·langchain·1024程序员节
专注仿真9 小时前
梯度提升类(XFBoost)算法详解与代码实例
开发语言·人工智能·python·算法·大模型训练·控制算法
外收内放9 小时前
Python基础语法练习题(75)
开发语言·python·学习
starzy199010 小时前
Scala循环与判断:一切皆表达式的控制流
开发语言·人工智能·scala
starzy199010 小时前
Scala类和对象:从构造器到样例类的完整指南
开发语言·后端·scala
niucloud-admin10 小时前
NIUCLOUD PHP SAAS上门家政使用文档--服务订单:订单列表
开发语言·php
怪我冷i10 小时前
Rust 的impl语法详解
开发语言·后端·rust
泛凡(Linyongui)11 小时前
基于 CW32L010 的智能厨卫调温旋钮方案--低成本 EC21 编码旋钮全解析
单片机·嵌入式硬件·c#
qq_4069810311 小时前
c++的decltype是什么
开发语言·c++