当前位置: 首页 > news >正文

使用 Setup Project 打包

一、下载工具

打开VS,【扩展】-【管理扩展】,搜索 Microsoft Visual Studio Installer Projects 安装

二、打包示例
1. 新建项目

在VS里新建项目,项目类型选择选【setup project】,项目取名如:Setup1,默认出现三个文件夹,

Application Folder:应用程序文件所在的文件夹,比如 .exe 之类的就放到这里

User's Desktop:桌面文件,一般放 .exe 文件的快捷方式

User's Programs Menu:应用程序文件夹,一般放 exe 快捷方式、卸载快捷方式等

一般情况下这3个文件夹够用了,有时还需要新建用户私人的应用程序文件夹(roaming %appdata%)

右击【File System on Target Machine】-【add special folder】-【用户的application data 文件夹】

2. 添加程序文件

将带有ico的图标文件和rtf许可文件的程序拖放到【application folder】文件夹,如下,

3. 创建快捷方式

右击exe文件,创建快捷方式,并重命名,如 test.exe,再将该快捷方式拖到【User's Desktop】文件夹

4. 设置任务栏图标

右击上面新建的 test.exe 快捷方式,打开属性窗口,设置应用程序任务栏图标

5. 设置许可证界面

1)在打包项目【Setup1】上右击,选择【view】-【用户界面】,会出现【Install】【Administrative Intall】。

2)选择【许可协议】,如果没有就右击【Start】-【添加对话框】-【许可协议】,将其拖到想要出现的位置,

3)点击【许可协议】,在属性窗口选择license文件(程序文件中的rtf文件)

6. 设置用户私人数据

1)构造一个数据文件,如:

<?xml version="1.0" encoding="utf-8" ?>
<config><config1 time="1"></config1>
</config>

2)在【User's Application Data Folder】新建一个示例文件夹:

将示例文件拖到示例文件夹中。

7. 设置默认安装路径

鼠标左键【Application Folder】,属性窗口设置 DefaultLocation 属性。

8. 设置安装属性

鼠标左键点击项目【Setup1】,注意不是右击,在属性窗口设置各项属性,一般要设置的几个属性如下:

AddRemoveProgramsIcon:控制面添加或删除程序的图标

Author:作者

InstallAllUsers:安装时是否默认选择“所有人”

Localization:安装时显示的语言

Manufacturer:发布者/公司(会显示在控制面板程序说明)

ManufacturerUrl:发布者/公司网站(会显示在控制面板程序说明)

ProductCode:程序唯一识别码(卸载时会用到)

ProductName:程序名称(控制面板卸载界面会看到)

Version:程序版本(只支持3个数,如2.1.3)

9. 添加卸载文件

1)把C盘下的msiexec.exe 文件复制到应用程序目录,一般在 c:\windows\syswow64 路径下,并改名为 uninstall.exe

2)创建uninstall.exe 的快捷方式

3)设置快捷方式的 Arguments 属性,属性值为上面的 ProductCode 属性值,注意 /x 空格

10. 设置卸载保留文件

有时候用户的配置数据,不能随卸载删除,只需要设置对应文件的 Permanent 属性

True表示保留,False表示删除。

http://www.dtcms.com/a/320492.html

相关文章:

  • 在嵌入式操作系统中,TerminateTask函数
  • Java 使用 SSHJ 执行 SSH 命令和 SFTP 文件上传和下载
  • 亚麻云之平步轻云
  • GDB中thread apply all命令使用指南
  • 正确使用 JetBrains
  • Upscayl – 免费开源的 AI 图像放大工具,跨平台使用
  • FastAPI的BackgroundTasks如何玩转生产者-消费者模式?
  • HTML 与 CSS:从 “认识标签” 到 “美化页面” 的入门指南
  • application.properties配置文件详解
  • 【Android笔记】Android 自定义 TextView 实现垂直渐变字体颜色(支持 XML 配置)
  • Linux 内存管理之page folios
  • Kiro智能化代码重构实战:从遗留系统到现代架构的AI驱动转型
  • STM32HAL 快速入门(二):用 CubeMX 配置点灯程序 —— 从工程生成到 LED 闪烁
  • ELK+Redis+Nginx多节点部署实战:从日志收集到可视化分析
  • 大语言模型提示工程与应用
  • 破界之光:DeepSeek 如何重构AI搜索引擎的文明坐标 || #AIcoding·八月创作之星挑战赛#
  • 分治-快排-215.数组中的第k个最大元素-力扣(LeetCode)
  • GPT OSS 双模型上线,百度百舸全面支持快速部署
  • MCP实现:.Net实现MCP服务端 + Ollama ,MCP服务端工具调用
  • 构建响应式在线客服聊天系统的前端实践 Vue3+ElementUI + CSS3
  • RAG实现:.Net + Ollama + Qdrant 实现文本向量化,实现简单RAG
  • 【优选算法】BFS解决拓扑排序
  • Spring Boot + ECharts 极简整合指南:从零实现动态数据可视化大屏
  • Java Stream API 详解与实战案例
  • 广东省省考备考(第七十天8.8)——言语、判断推理(强化训练)
  • Ubuntu 22.04 安装 Docker 完整指南
  • flutter TLS protocol versions: (TLSv1.2, TLSv1.3)
  • flutter开发(一)flutter命令行工具
  • Flutter开发 多孩子布局组件
  • 在 Debian 系统上安装 Redis服务