.net程序部署(setupFactory进阶)

接上一篇 继续使用上一篇的project 。将archive里无用的文件删除 添加我们需要的文件进来。

config是一个文本文件。 注意所有文件的 destination都是 %appfolder%   ,这代表程序 安装目录 setupfactory有很多这样的 全局变量 用起来非常方便 ,获取系统环境桌面目录 %desktop%  。 这类似 win批处理命令的%windir%
 我们把目录改一下 %appfolder%\tools,这样安装时就可再创建子文件夹tools。

我们确确实实 想定义一个我们自己独有的 用户体验好的 安装包 ,我们不想千篇一律。

在screens ->before installing 选项卡:

把welcome to setup 删掉,然后在license agreement编写我们自己的 安装许可文本:

我们需要自定义一个对话框界面  用来让用户在安装过程中进行配置。在安装时也将针对用户的配置进行相应的处理。
添加一个我们自定义的安装配置界面:

User information ,Select shortcut folder 两屏也一并删掉。

在创建custom Screen的时候 “下一步”按钮的 脚本(单击 screens  ->before installing -> 选中custom ->ecit->actions- >On Next 选项卡):


 1 -- These actions are performed when the Next button is clicked.
2 -- advance to the next screen
3 --采集数据 并放到全局变量里
4 --端口
5 port = DlgEditField.GetProperties(CTRL_EDIT_01).Text;
6 --启动菜单加快捷方式
7 startup = DlgCheckBox.GetProperties(CTRL_CHECK_BOX_01).Checked;
8 --桌面快捷方式
9 desktop = DlgCheckBox.GetProperties(CTRL_CHECK_BOX_02).Checked;
10 --%StartupFolder%
11 runnow = DlgCheckBox.GetProperties(CTRL_CHECK_BOX_03).Checked;
12 --是否有加密狗
13 softkey=DlgCheckBox.GetProperties(CTRL_CHECK_BOX_04).Checked;
14 --Dialog.Message("title ddf",txport.Text);
15 Screen.Next();

这个很简单 就是获取几个控件的值 并赋给变量,以便在稍后的过程中使用。

然后就是安装过程中针对用户的选项进行处理 ,安装过程不就是 他自动生成的 拷文件么 。要我们管毛线啊。我这里只是一个示范 我们根据用户选项追加配置文件 也就是config.ini 。首先执行此代码时 文件已经复制完毕 ,配置文件的目录在 %appfolder%  写文本文件  这样即可。

还是 screens-> after installing ->ecit->actions->onPreLoad:


 1 -- These actions are performed before the screen is shown.
2 --安装完成 进行初始化全局变量里面的配置
3 --端口,追加配置文件
4 TextFile.WriteFromString(SessionVar.Expand("%AppFolder%\\config.ini"), "\r\nport="..port, true);
5 --有无加密狗
6 if softkey then
7 TextFile.WriteFromString(SessionVar.Expand("%AppFolder%\\config.ini"), "\r\nhardwareIdType=softkey", true);
8 end
9
10 if startup then
11 Shell.CreateShortcut("%StartupFolder%", "DcmPrintSCP", SessionVar.Expand("%AppFolder%\\NewScp.exe"), "", "%AppFolder%", "", 0, SW_SHOWNORMAL, nil, "shortcut for dcmprintscp");
12 end
13 --根据复选框选项创建快捷方式 的代码 这样就可以了。
14 if desktop then
15 Shell.CreateShortcut("%DesktopFolder%", "DcmPrintSCP", SessionVar.Expand("%AppFolder%\\NewScp.exe"), "", "%AppFolder%", "", 0, SW_SHOWNORMAL, nil, "shortcut for dcmprintscp");
16 end
17
18 --卸载程序有问题 必须得新建一个快捷方式
19 Shell.CreateShortcut("%AppFolder%", "shortcut_uninstall", SessionVar.Expand("%AppFolder%\\uninstall.exe"), SessionVar.Expand("\"/U:%AppFolder%\\Uninstall\\uninstall.xml\"" ), "", "", 0, SW_SHOWNORMAL, nil, "shortcut for uninstall");

需要注意的:
字符串连接 是 ..这种方式 ,并不是C++里寻常的+号 也不是 VB里的& 连字符。

还有些需要注意的是 类vb 语法 并非完全跟vb一样  ,比如这段

if startup then

xxx

End

最后我们需要 自己搞一个banner  我已经搞好了 ,既然做东西就要注重细节。

程序启动时显示安装许可 ,然后是用户自定义配置选项  然后是选择安装目录。然后安装程序释放我们打包的文件到指定目录。 然后我们的脚步根据用户定义的配置选项追加配置文件 和创建桌面快捷方式 ,并且用户没有.netFramework框架 自动安装。就这样一个安装包就做好了。像我这种需求 基本上 大部分功能我都用不完  只是冰山一角。

我在这bilibili的半天 你都不厌其烦的看完了  你再 根据自己的实际需求  , 再啃啃帮助文档 就差不多了。

.net程序部署(setupFactory进阶),布布扣,bubuko.com

时间: 2024-12-22 22:18:07

.net程序部署(setupFactory进阶)的相关文章

.net程序部署(setupFactory)

vs 自带的安装打包 实在弱爆了,点都不好用.一直一直在寻觅一个靠谱点的打包工具.在网上寻寻觅觅 寻寻觅觅 功夫不负有心人,终于让我找到了.setupFactory  我用的是 8.0版本 . 首先要添加.net 2.0引用 ,默认没有 我们要先把添加进去.他是通过xml文件来配置的 所以我们首先找到Dependencies 目录 先得增加一个dotnet20.xml文件.这是xml文件下载  .内容太多 都是些脚本 网上找的 ,经过我倒腾过后确实可以用. 看见脚本里面的目录没有:<File>

.net程序部署(mono方式)

某一次 我同事用了这个词 ,说这样才显得够专业 擦.把某某项目 部署到服务器上 .擦 不就是拷个文件过去运行么.月亮 还是绵羊  我搞不清楚了 咱英文不好,绵羊叫的声音?.你就叫我山寨程序猿 随意 一直就这风格. mono 是一种基于.NET Framework的开放源代码平台. 安装文件在此地址下载 http://www.go-mono.com/mono-downloads/download.html 经证实 安装过后直接 把 moon.exe  和相关目录 直接 拷走 然后运行也是可以的,所

IIS安装与MVC程序部署

最近在做访客系统,虽然说不是什么多大的项目,但麻雀虽小五脏俱全,使用EF Code First+Mysql+Frozenui响应式布局,感觉通过这个项目学到好多东西,Mysql的使用.EF映射Mysql.相遇式布局,今天上午发了一个版本,没想到有些地方需要改动,改动还不小,于是下午打起十二分的精神改,终于在下午快下班的时候改完了.改完之后要部署,说实话虽然做.Net也做这么久了,可我还没部署过,第一个版本上线的时候还是找同桌解决的,可是这个部署自己始终要学要会的,于是就自己百度试在自己电脑上试了

浅谈mapreduce程序部署

尽管我们在虚拟机client上能非常快通过shell命令,进行运行一些已经封装好实例程序,可是在应用中还是是自己敲代码,然后部署到server中去,以下,我通过程序进行浅谈一个程序的部署过程. 在启动Hadoop之后,然后把程序达成可运行的jar包,并把对应的第三方jar包 包括进去.运行hadoop    jar   XXX. +驱动名称. package com.mapred; import java.io.IOException; import java.io.PrintStream; i

将本地Java程序部署到linux服务器并执行

需求:将本地Java程序部署到linux服务器并执行,首先要将本地Java程序打成jar包,然后拷贝到服务器后运行java -jar xx.jar 问题:该程序本地运行正常,服务端运行报错找不到第三方包中的类 原因:本地打jar包时有错,未能正确引入第三方包 解决:本地通过fat jar插件来打包,方法如下 在Eclipse 下 java 应用程序打包 Mainfest.mf 格式 首先保证程序在Eclipse下的正常执行,然后方法如下: ( 写在最前面 做好的Eclipse打包 还是使用插件

将 Django 应用程序部署到生产服务器

原文出自: http://www.ibm.com/developerworks/cn/opensource/os-django/ 比较有启发性质的一篇文章,会避免很多弯路 Django 是一个基于 Python 的开源 Web 应用程序框架,其目的是使创建数据库驱动的 Web 站点和 Web 应用程序更加容易.开发 Django 应用程序很简单,因为该框架包含了一个开发 Web 服务器.但是这个框架不适合在生产环境中使用,因此需要进一步将 Django 应用程序部署到 Web.在本文中,您将了解

deployment与Web应用程序部署

定义用于支持 Web 应用程序部署的配置设置. <deployment retail="true|false" /> retail属性:设置一个值,该值指定是否以发布模式部署 Web 应用程序.默认值为 false.如果 retail 设置为 true,ASP.NET 将禁用某些配置设置,如跟踪输出.自定义错误和调试功能. 但是只要我在Web.Config里面一加这个配置就报错.

当程序部署到服务器之后出现了本地没出现的问题

有时候出现的一些问题可能是与专业知识没有多大关系可是却让你会花费很长时间去寻找问题,今天 我就遇到了一个问题,我在本地搭建了一个开发-部署运行的环境,当功能实现之后我将程序部署到服务器上,当访问程序时发现数据就是出不来,刚开始觉得很奇怪,想着是不是写的代码是不是有问题.然后就在这条路上寻找问题的所在,首先就是寻找如何在服务器上调试程序的方法,最总选择了通过跟踪Log的方式,最后终于发现了问题,原来是我在本地数据中写的数据库对象没有移到服务器上.回想起来自己真是213...... 总结: 当程序部

iOS程序偏好设置--进阶

iOS的App除了在应用程序内部做偏好设置页面,还可以在setting里配置出偏好设置页面.如下图 专家容志芳在这篇文章有详细的入门介绍,基本的原理是为工程添加settings.bundle后,会在里面看到root.plist,通过修改它里面的配置,来自定义自己的setting页面,其中的控件有以下7种. 通过type来决定是哪种控件,除了子面板外,基本通过value和title来设置控件,子面板使用如下: 在Settings.bundle里新建了名为Acknowledgements1.plis