2022年11月12日更新,VS提供这个工具,越用,越是觉得拉跨。我已弃坑!
推荐使用NSIS,这个打包软件,很多市面上流行的软件都是它打包的。免费里面最强。
可以看看这篇文章,讲的很不错:
权限不足的问题可以通过相同的方式解决
//------------------------依然对VS提供这个工具感兴趣的可以往下看
这篇文章写的比较详细:
VS2010 C/S模式winForm打包部署.详细!_邢海芳的博客-CSDN博客https://blog.csdn.net/xhf55555/article/details/7702212具体过程,看这篇文章,我这边讲一下这边踩的坑。
选择主项目输出就行,不用把Debug中的文件一个个加进去,vs会自动关联相关dll:
但是,额外的文件还是得自己添加,比如这个sqlite.dll 就是需要和exe放在一起的文件(还有一一些配置或者图片)。
凡是vs并不知道它的存在,无法关联,所以需要额外添加。
选择系统必备后,无法生成程序,报错如下:
https://dotnet.microsoft.com/zh-cn/download/dotnet-framework/net48
下载,个体小的是语言包,个头大的是运行时
ndp48-x86-x64-allos-chs.exe和ndp48-x86-x64-allos-enu复制到 目录:
C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\
ndp48-x86-x64-allos-chs.exe 复制到zh-Hans文件夹下(必须要,不然依然会失败)
这个报错,意思就是,你重新生成了安装文件,但是安装文件的版本和之前是一样的!
那版本号,在哪设置?请看下图:
如果你将Version从1.0.0改为1.0.1那么上面那个报错就会消失。就可以直接用新版本替换旧版本。
那,新版本检测和移除旧版本的选项,都是根据这个Version来的。
比如,检测更新的话,如果按照的是较低的版本,安装的过程就会提示:
现在还有一个需求,更新新版本的时候,不要更新配置文件(因为配置是根据现场的具体情况设置的)
如果是true,会删除之前版本然后再安装。
但是如果你安装是同一个目录Config这个文件夹里的文件不会删除。而且也不会覆盖,会保持原样。除非更新之前,你先卸载了。
打包后程序默认安装到C盘,此时自己读取自己配置文件结果权限不足。
VS中右键项目-》属性-》安全性,勾选【启用ClickOne安全设置】
然后这里会多个文件 :app.manifest
改下执行等级:
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
修改为
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
再次找到项目属性的安全性,去掉【启用ClickOne安全设置】的勾选;
保存后编译,再次打包,安装,即可。
.net6下找不到这个安全性的选项。
直接添加,app.manifest, 修改内容和之前一样