201八第二发:记贰遍【Advanced Installer】打包之旅葡京网上娱乐场

四、设置IIS网址的网站名、端口号

在地点对话框的末梢一步中,大家记住网址名称的和端口号的文本框的属性名,然后来到IIS选项卡中:

先是新增三个用到程序池,名称即为网址名称文本框的属性名,那里为EDIT_1_PROP,在Advanced
Installer里面,使用中括号[]将控件的个性名括起来表示变量的概念。

在Basic Pool
Settings中装置程序池的启航航空模型型式为连日来运营,勾选立刻运维程序池复选框,framework版本选拔为四.0,托管情势选用为集成。

葡京网上娱乐场 1

在Identity中装置使用程序池表示为ApplicationPoolIdentity。

葡京网上娱乐场 2

采取程序池设置好以往,再来设置站点:

新建3个站点名称一致为EDIT_1_PROP,在Basic
Site Setting中设置Name和文书路径。

葡京网上娱乐场 3

 

在Bindings/SSL中安装端口号,IP地址采用一切未分配。

葡京网上娱乐场 4

 

在Application
Pool中选用刚刚新建的利用程序池。

葡京网上娱乐场 5

到那里IIS那壹块就设置好了。

设置进度中,Advanced
Installer就会自行的将网址计划好。那个的确是很牛很强劲!不得不钦佩人家做的便是好!

1)1.fitEnd,fitStart,fitCenter

此地以fitEnd为例,其余多少个像样:

以身作则代码:

<!-- 保持图片的横纵比缩放,知道该图片能够显示在ImageView组件上,并将缩放好的图片显示在imageView的右下角 -->
    <ImageView
        android:id="@+id/imageView3"
        android:layout_width="300px"
        android:layout_height="300px"
        android:layout_margin="5px"
        android:scaleType="fitEnd"
        android:src="@mipmap/meinv" />

运行效果图:

葡京网上娱乐场 6


七、后记

此次教程到此甘休,那也是博主在这几天假日寻觅出来的,倘诺有不当之处,尽请指正!

屈居Advanced
Installer的官网地址:https://www.advancedinstaller.com/

瞩望本文对你有着扶助。借使您认为本文能够帮助你,就点个赞吧。你的帮助是博主继续坚忍不拔的不懈重力。

限制ImageView最大开间与中度为200px,就是最七只可以展现200*200的图片,我们又设置了1个 **adjustViewBounds

“true”*调动大家的分界来保险图片的长度宽度比,此时的ImageView宽高为是12八\200~


伍、二种情势设置config文件

2)centerCrop与centerInside

  • centerCrop:按横纵比缩放,直接完全覆盖全数ImageView
  • centerInside:按横纵比缩放,使得ImageView可以完全显示这些图片

示范代码:

<ImageView
        android:layout_width="300px"
        android:layout_height="300px"
        android:layout_margin="5px"
        android:scaleType="centerCrop"
        android:src="@mipmap/meinv" />

    <ImageView
        android:layout_width="300px"
        android:layout_height="300px"
        android:layout_margin="5px"
        android:scaleType="centerInside"
        android:src="@mipmap/meinv" />

运作效果图:

葡京网上娱乐场 7


2、画流程图

俗话说的好,“磨刀不误砍柴工”!

第二强调一点,我们要先弄精晓大家每一步要做怎么着,这样接下去在制作设置包时才能条理清晰,井井有理,不不难犯错。

诸如我们要一口咬定客户机器上是或不是安装.net
framework叁.5及以上版本,是还是不是安装IIS,是或不是安装SQL
Server二〇〇七及以上版本数据库等等。

本身这一个类别的流程图如下:

葡京网上娱乐场 8

style=”font-size: 18px; font-family: 宋体;”>Tips一:开端在此之前最佳先画流程图

肆.制图圆形的ImageView

深信大家对圆形大概圆角的ImageView不不熟悉吧,以往成千上万的应用程式都很喜爱圆形的头像是吗~

实际上项目标话可以思考用Github上牛人写的控件,比如上边那八个:

RoundedImageView

CircleImageView

 

小说参考自:http://www.runoob.com/w3cnote/android-tutorial-imageview.html

2、设置基本音信

Name即为该安装包的称号,公司便是您所在的铺面啦,还有版本音信等等,这么些极粗略。

葡京网上娱乐场 9

叁.scaleType装置缩放类型

android:scaleType用于安装展现的图形如何缩放可能移动以适应ImageView的大小
Java代码中可以透过imageView.setScaleType(ImageView.ScaleType.CENTEHummerH二);来设置~
可选值如下:

  • fitXY:对图像的横向与纵向实行独立缩放,使得该图片完全适应ImageView,不过图片的横纵比恐怕会时有发生转移
  • fitStart:保持纵横比缩放图片,知道较长的边与Image的编制程序相等,缩放落成后将图片放在ImageView的左上角
  • fitCenter:同上,缩放后放于中间;
  • fitEnd:同上,缩放后放于右下角;
  • center:保持原图的高低,展现在ImageView的主导。当原图的size大于ImageView的size,当先部分裁剪处理。
  • centerCrop:保持横纵比缩放图片,知道完全覆盖ImageView,大概会现出图片的来得不完全
  • centerInside:保持横纵比缩放图片,直到ImageView能够完全地出示图片
  • matrix:暗中认可值,不改动原图的尺寸,从ImageView的左上角开始绘制原图,
    原图超过ImageView的局地作裁剪处理

接下去我们1组组的来比较:


3、开始创造

有了流程图,只需根据!关于Advanced
Installer的基础用法,网上有为数不少的资料,官网也有帮助文书档案,那里就不赘述了。由于要用到自定义安装包的进程,必要新建对话框,博主用了店铺模板,Advanced
Installer的本子是1四.5.二,也是流行的版本。

3)fitXY

不按比例缩放图片,目的是把图纸塞满整个View

演示代码:

<ImageView
        android:layout_width="300px"
        android:layout_height="300px"
        android:layout_margin="5px"
        android:scaleType="fixXY"
        android:src="@mipmap/meinv" />

运维效果图:

葡京网上娱乐场 10

行吗,明显扁了=-=~


1、直接在Advanced Installer中设置

在添加文书的时候,假如有xml类型的文件,会有这么的唤起:

葡京网上娱乐场 11

那儿我们勾选须求修改配置的文件,点击ok,那样就足以一贯在Advanced
Installer中期维修改。

找到要求修改的节点,直接有文本框的性质替换掉就能够:

葡京网上娱乐场 12

那样,在装置进程中就会将config文件中的相应的节点替换为客户输入的值。

还记得Tips3啊?我们说过如果改动文本框的属性名之后,那么那样设置之后,config中的值不会安装为客户输入的值,会始终是文本框中设置的暗许值。

铭记切记!!!首要的事体八个叹号!

一)写代码验证差距:

写个简易的布局测试下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:tools="http://schemas.android.com/tools"  
    android:id="@+id/LinearLayout1"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:orientation="vertical"  
    tools:context="com.jay.example.imageviewdemo.MainActivity" >  

    <ImageView  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:background="@drawable/pen" />  

    <ImageView  
        android:layout_width="200dp"  
        android:layout_height="wrap_content"  
        android:background="@drawable/pen" />  

    <ImageView  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:src="@drawable/pen" />  

    <ImageView  
        android:layout_width="200dp"  
        android:layout_height="wrap_content"  
        android:src="@drawable/pen" />  

</LinearLayout> 

作用图如下:

葡京网上娱乐场 13

结果分析:

宽高都以wrap_content那就同样,是原图大小,不过,当我们一向了宽或许高的话,
差距就1览无遗了,blackground完全填充了百分百ImageView,而src如故是那么大,
而且他居中了啊,那就关乎到了ImageView的另壹天性能scaleType了!
别的还有有个别,那里大家说了只设置width或许height哦!参与大家同时安装了
width和height的话,blackground依旧填充,可是,src的轻重只怕产生改变啊!
比如,大家测试下下边那段代码:

<ImageView  
        android:layout_width="100dp"  
        android:layout_height="50dp"  
        android:src="@drawable/pen" />

运作效果图:

葡京网上娱乐场 14

PS:scaleType上边会讲~


6、自定义对话框(Dialog)

新建对话框在此之前能够在Themes中选拔核心和样式。

点击User
Interface->Dialogs,在FolderDlg上右键,选取Add Dialog是添加Advanced
Installer中自定义的对话框,选用New Dialog是增创多少个空的对话框,

然后大家可机关在上面定义内容:

葡京网上娱乐场 15

新建对话框后,能够拖出安装进度中dialog的外观,那么些对于大家.Net开发职员来说,应该是小Case吧,看一下成效:

葡京网上娱乐场 16

能够对文本框设置暗中认可值:

葡京网上娱乐场 17

style=”font-size: 18px; font-family: 宋体;”>Tips3:文本框中的属性名,不要改动。尽管改动会有大标题,至于什么难点,前边再说!

出于大家须要设置连接字符串,所以须要客户设置数据库的相干音讯:

挑选Add
Dialog后,在弹出框中采取SQLServerConnentionDlg

葡京网上娱乐场 18

功能如下:

葡京网上娱乐场 19

末尾再新建一个对话框,用于安顿项目到IIS所要求的标准化:

葡京网上娱乐场 20

1致能够安装网址名称和端口号:依照流程图,那里的默许值须要各自设置为Mango和800一,用户能够自动修改。

到那里新建对话框告1段落。

4)matrix

从ImageView的左上角初始绘制原图,原图超越ImageView的部分作裁剪处理

演示代码:

<ImageView
        android:layout_width="300px"
        android:layout_height="300px"
        android:layout_margin="5px"
        android:scaleType="matrix"
        android:src="@mipmap/meinv" />

运维作效果果图:

葡京网上娱乐场 21


二、使用自定义的dll文件

至于这点请见第四小节。

⑤)Java代码中设置blackground和src属性:

前景(对应src属性):setImageDrawable( );
背景(对应background属性):setBackgroundDrawable( );


六、自定义dll

点击Custome
Behavior->Custom Actions,选拔.Net Installer Class
action。那时会让你挑选文件中的dll文件。

葡京网上娱乐场 22

本来了,从前,请打开你的Visual
Studio,新建一个类库项目,那里命名称为InstallLandaV⑨ServiceT,然后新建1个设置程序类,重写Install方法。

到那边,大家先暂停一下,问一下协调:在程序中怎么接收从Advanced
Installer传过来的参数呢?

万壹此时大家早就将那个dll参与到Advanced
Installer中,在Installer Class Paramters中得以增进参数。

葡京网上娱乐场 23

比如将文件路径传回后台,能够如此充足:Name为FilePath,Value为[APPDIR]\。

此地有地方必要小心,传递文件路径时,Value为[APPDIR]\,这个”\”请不要漏掉了。

style=”font-size: 18px; font-family: 宋体;”>Tips四:传递文件路径时,Value为[APPDIR]\,这个”\”请不要漏掉了。

其它参数的Value,必要设置为对应文本框的性质名称,格式为:[属性名]。

上边来看一看代码:

public override void Install(IDictionary stateSaver)
{
    Parameters configParms = new Parameters();
    configParms.FilePath = Context.Parameters["FilePath"];
    configParms.ServerPath = Context.Parameters["ServerPath"];
    configParms.ClientPath = Context.Parameters["ClientPath"];
    configParms.DataSource = Context.Parameters["DataSource"];
    configParms.UserId = Context.Parameters["UserId"];
    configParms.Password = Context.Parameters["Password"];
    new Operators().UpdateLandaV9Config(configParms);
    base.Install(stateSaver);
}

此处关键接收从Advanced
Installer中传过来的参数,接着在Operators类中更新配备文件。

还记得Tips三啊?要是在那里修改的属性名,那么那里吸收的参数也是文本框的暗许值。

那其间根本干了3件事,获取连接字符串,更新连接字符串,安装服务

public void UpdateLandaV9Config(Parameters configParms)
{
    string filePath = Path.Combine(configParms.FilePath, "LandaV9Service", "LandaEntryInfoService.exe.config");
    string connectionString = this.GetConnectionString(configParms);
    this.UpdateConnections(filePath, connectionString);this.InstallService(Path.Combine(configParms.FilePath, "LandaV9Service"));
}

还记得Tips四吗?就算在传递文件路径的时候只是写[APPDIR],而不是[APPDIR]\,那么程序运维到那里的时候,会抛“FileNotFound”至极!

下来来看一下切实的代码:

/// <summary>
/// 获取连接字符串
/// </summary>
/// <param name="op"></param>
/// <returns></returns>
public string GetConnectionString(Parameters op)
{
    return string.Format("Data Source={0};Initial Catalog=LandaEntryManager;Persist Security Info=True;User ID={1};Password={2}", op.DataSource, op.UserId, op.Password);
}

/// <summary>
/// 更新连接字符串
/// </summary>
/// <param name="filePath"></param>
/// <param name="conn"></param>
public void UpdateConnections(string filePath, string conn)
{
    XmlDocument xmlDocument = new XmlDocument();
    xmlDocument.Load(filePath);
    XmlElement xmlElement = (XmlElement)xmlDocument.SelectSingleNode("/configuration/connectionStrings/add[@name='LandaEntryManager']");
    if (xmlElement != null)
        xmlElement.SetAttribute("connectionString", conn);
    xmlDocument.Save(filePath);
}

再来看安装服务:

/// <summary>
/// 安装服务
/// </summary>
/// <param name="filePath"></param>
public void InstallService(string filePath)
{
    Environment.CurrentDirectory = filePath;
    Process process = new Process();
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.FileName = "Install.bat";
    process.StartInfo.CreateNoWindow = true;
    process.StartInfo.Verb = "runas";  //主要设置为以管理员启动
    process.Start();
}

有安装就有起步,但是假若紧跟其后写运维服务,会唤起找不到劳动,安装程序就会出错。

博主想了二个格局,重写OnAfterInstall方法,在那些办法里面写运转服务:

/// <summary>
/// 重启服务
/// </summary>
/// <param name="savedState"></param>
protected override void OnAfterInstall(IDictionary savedState)
{
    ServiceController serviceController = new ServiceController("LandaInformationServiceV9");
    serviceController.Start();
    base.OnAfterInstall(savedState);
}

如此那般就没难题了!

在那些程序集里面能够自定义你想做的其余工作,比如,还原数据库等等。

1.src属性和background属性的界别:

在API文书档案中大家发现ImageView有八个能够安装图片的品质,分别是:src和background

常识:

1background平常指的都是背景,而src指的是内容!!

②当使用src填入图片时,是依照图片大小直白填充,并不会进行拉伸

而采纳background填入图片,则是会遵照ImageView给定的幅度来开始展览拉伸

捌、设置桌面快捷格局

根据流程图所示,安装收尾后,须求在桌素不相识成连忙防形式。所以接下去,我们就来做这件事:

葡京网上娱乐场 24

第一来到Files and Folders选项卡,在Application
Shortcut Folder下边右键 采用“New Shortcut”,弹出如下界面:

葡京网上娱乐场 25

 

在这么些框里首要安装快速格局的Name和描述以及图标(这几个图标,能够接纳.exe文件)。点击OK,就会在Application
Shortcut Folder中展现那样一条音讯。

葡京网上娱乐场 26

唯独先别急,若是单纯是这样的话,飞速格局是不起功能的。因为大家还尚未设置飞速情势对应的可执行文件。

双击那条新闻,在弹出的对话框中装置Shortcut
Target。

葡京网上娱乐场 27

看来那,肯定有人有疑问?既然那样怎么不在新增飞快格局的时候共同设置呢?

因为在增加产量的时候,Shortcut
target那一个文本框中的内容无法改改。这些很坑爹,博主也试了长久才试出来的。

提起底,将以此音信拖到Desktop里面即可,安装收尾后,就会在桌面展现这几个火速方式。

葡京网上娱乐场 28

本节引言:

本节介绍的UI基础控件是:ImageView(图像视图),见名知意,正是用来呈现图像的3个View或然说控件!
官方API:ImageView;本节讲解的始末如下:

  1. ImageView的src属性和blackground的区别;
  2. adjustViewBounds设置图像缩放时是不是按长度宽度比
  3. scaleType设置缩放类型
  4. 最简单易行的绘图圆形的ImageView

4、设置安装条件

点击Requirements->Launch
Conditions->Software,勾选相应的尺度。那里根据流程图所示,小编应该勾选.Net
Framework、IIS以及SQL Server。注意那里的基准指的是最低标准,比如自个儿这里SQL
Server选的是二〇〇七,即客户机器上理应具有二零零七及以上版本的SQL
Server,倘诺未有装,则会唤起未有设置SQL二零零六。

此处还有系统规范即须求客户机器是win7依旧winxp等等。尽管还有越多的标准,Custom里面能够自定义。

 葡京网上娱乐场 29

叁)设置光滑度的题材

说完前面五个界别,接着再说下setAlpha属性咯!这么些很不难,那么些个性,只有src时才是有机能的!!


伍、添加文书或文件夹

点击Resources->Files and
Folders,在Application Folders上右键,选用Add Folder只怕Add
Files,那里自个儿添加了四个文件夹,用于后续操作。

葡京网上娱乐场 30

二)化解blackground拉伸导致图片变形的措施

在头里的意义图中的第一个Imageview中大家能够看看图片已经被拉伸变形了,
长方形变成了星型,对于和自身同一有1线自闭症的人来说,分明是不可接受的,
有未有点子去设置呢?答案肯定是有的,小编一时知道的有以下三种办法:

  • 以此适用于动态加载ImageView的,代码也慢慢,只要在累加View的时候,把大小写死就能够了

    LinearLayout.LayoutParams layoutParam = new LinearLayout.LayoutParams(48, 48);

        layout.addView(ibtnPen, layoutParam); 
    
  • 除此之外动态加载view,越来越多的时候,大家依旧会透过xml布局的方法引入ImageView的
    消除方法也简单,正是通过drawable的Bitmap财富文件来成功,然后blackground属性设置为该公文即可!
    这几个xml文件在drawable文件夹下成立,那几个文件夹是要自个儿创设的哦!!

pen_bg.xml:

<bitmap  
    xmlns:android="http://schemas.android.com/apk/res/android"  
    android:id="@id/pen_bg"  
    android:gravity="top"  
    android:src="@drawable/pen"  
    android:tileMode="disabled" >  
</bitmap>

上述代码并简单领会,估量大家最吸引的是titleMode属性吧,那天性子是平铺,即是大家windows设置
背景时候的平铺,多少个小图标铺满整个荧屏捏!记得了吗!不记得本身能够试试!disabled正是把他给禁止了!

哪怕地方那串简单的代码,至于调用方法如下:

动态: ibtnPen.setBacklgroundResource(R.drawable.penbg);

静态: android:background = “@drawable/penbg”


三、设置默许安装路径

点击Package
Definition->Install Parameters,填写默许安装路径。

Application
folder暗中同意的剧情是那样:“[ProgramFilesFolder][Manufacturer]\[ProductName]”,
这些剧情表示安装时暗中同意的设置路径:

[ProgramFilesFolder]表示文件夹,那里为D:\Program
Files(x86)。

[Manufacturer]代表集团名称,那里为Landsoft。

[ProductName]表示产品名称,那里为LandaV9。

 葡京网上娱乐场 31

2.adjustViewBounds设置缩放是不是保存原图长度宽度比

ImageView为大家提供了adjustViewBounds属性,用于安装缩放时是不是维持原图长度宽度比!
单独设置不起成效,须求合营maxWidthmaxHeight天性壹起利用!而背后这多少个属性
也是内需adjustViewBounds为true才会生效的~

  • android:maxHeight:设置ImageView的最大惊人
  • android:maxWidth:设置ImageView的最大幅度面

代码示例:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <!-- 正常的图片 -->
    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5px"
        android:src="@mipmap/meinv" />
    <!-- 限制了最大宽度与高度,并且设置了调整边界来保持所显示图像的长宽比-->
    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5px"
        android:adjustViewBounds="true"
        android:maxHeight="200px"
        android:maxWidth="200px"
        android:src="@mipmap/meinv" />

</LinearLayout>

运作效果图:

葡京网上娱乐场 32

结果分析: 大的不胜图片是从未其余处理的图形,尺寸是:5四壹*374;而下边包车型客车不行的话大家透过maxWidth和maxHeight

一、前言

二零一七年最终几天,你们都欣然的跨年,博主还在加班制作.net安装包。因为年前要出来第二版的安装包,所以博主是加班加点啊。本来想用VS自带的制作工具,不过用过的人都知情,真是分外好(tong)用(ku),各类包须要独自下载不说,界面也不美观,所以决定弃用之。同事推荐用Advanced
Installer,但是同事也是很久不用了,记不起来具体用法。所以博主是边摸索边前进,所以不免跳进坑里,为了制止后来人跳进同样的坑里,作文以记之。

好了,不说废话,正文初始!

四)两者结合妙用:

网上的一张图:

葡京网上娱乐场 33

1看去是三个大概的GridView,各种item都以2个ImageView,然而仔细的您恐怕发现了,
下面的ICON都不是规则的,而是圆形,圆角矩形等等,于是乎那里运用了src +
background了! 要兑现上述的法力,你只须要五个操作: 找一张透明的png图片
+
设置一个浅蓝的背景
 (当然你也能够安装png的光滑度来兑现,可是结果或许和预期的有出入哦!)
大家写个简易例子:

葡京网上娱乐场 34

如图,呆萌呆萌的小猪就这么显示到ImageView上了,哈哈,blackground设置了海水绿背景!

落成代码:

<ImageView  
    android:layout_width="150dp"  
    android:layout_height="wrap_content"  
    android:src="@drawable/pig"  
    android:background="#6699FF" /> 

PS:
当然你也得以用selctor达成点击效果,设置差异的景况设置分歧的图样,以贯彻点击大概触摸成效!


一、选用模板

第一新建立模型板里面接纳Enterprise,并精选语言(默许为普通话),然后创立项目:

葡京网上娱乐场 35

style=”font-size: 18px; font-family: 宋体;”>Tips2:假诺安装包中必要自定义对话框,则要求选取Enterprise版。

5)center

保险原图的轻重,展现在ImageView的基本。当原图的size大于ImageView的size,超越部分裁剪处理。

示范代码:

<ImageView
        android:layout_width="300px"
        android:layout_height="300px"
        android:layout_margin="5px"
        android:scaleType="center"
        android:src="@mipmap/meinv" />

运作效果图:

葡京网上娱乐场 36


7、设置必填验证

就拿地方这么些对话框为例,尽管大家设置的有暗中认可值,但是客户在装置进度中极大心给删掉了,又未有填写,恰巧又点了下一步,那样的话,安装进程中会有题目。所以大家要做必填验证,即文本框中平昔不值,则“下一步”按钮不可用,有值才可用。

之所以选拔“下一步”,关心人世的“Control
Conditions”:

 葡京网上娱乐场 37

点击New按钮在新弹出的界面中在Condition中填入“NOT
EDIT_1_DROP OR NOT EDIT_1_DROP_1”,在Action中选择Disable。

EDIT_1_DROP和EDIT_1_DROP_1便是网址名称和端口号,前边加NOT的趣味就是,要是那四个文本框中任意四个从未填写,则按钮不可用(Disable)。

同理再添加三个“EDIT_1_DROP AND
EDIT_1_DROP_一”,在Action中精选Enable。即都填内容了,则按钮可用。那样就对控件做了必填验证。是或不是很简短吗!

葡京网上娱乐场 38