本文不但介绍了CS-Script如何部署,还介绍了CS-Script的部署后面的原理,并用一个框图详细介绍了部署中的各种细节。

一、获取资源

1.从官网上下载编译好的csscript资源:cs-script.7z

https://csscriptsource.codeplex.com/releases/view/616234

2.解压到某目录下,注意选择一个相对固定的目录,比如一个专门用来存放库文件的目录;

比如在我的机器上会放到: E:\OpenSource\cs目录下;

二、执行安装

严格来说,csscript是不需要部署的,其实只要下载了zip包就ok了,不需要什么部署,下载了即可使用。后续的所谓安装只是对操作系统做一些调整,以便让后续编写脚本,执行脚本可以更加方便。

安装步骤:

1. 找到第一节中的解压目录,运行其根目录中的install.cmd,即可完成安装;

2. 默认情况下CS-Script的库是使用.NET V4.5的(注,并不是安装程序需要.NET V4.5,而是运行程序,特别是CSScriptLibrary.dll),如果当前计算机没有安装.NET v4.5,则程序会弹出提示,或者选择降低到 V4.0来使用,那么在内部来说,就是用 lib\Bin\NET 4.0\CSScriptLibrary.dll来替代 lib目录下的CSScriptLibrary.dll。

三、Install.cmd在系统中添加了什么

1. 添加了各种环境变量的,如下图所示:

同时会把%CSSCRIPT_DIR%, %CSSCRIPT_DIR%\LIB添加到环境变量中,以便可以找到cscs.exe, csws.exe等各种csscript的工具;

2.在ProgramData中创建了CS-Script目录,拷贝了后续辅助调试需要用到的一些资源,主要是将后续的右键菜单需要用到的一些命令拷贝到了

C:\ProgramData\CS-Script\ShellExt目录下了,内容如下:

3. 注册了一个动态的右键菜单,后续只要在cs文件上右键,在右键菜单中就会包含如下内容:

这个菜单其实是根据C:\ProgramData\CS-Script\ShellExt目录下的cmd文件动态生成的。

四、Install.bat都做了什么?

打开install.cmd,里面就一句话:

start css_config.exe,所以我猜想所有配置的工作都封装在css_config.exe的源码中了,好在这是开源代码,在下载源码包中也包括了css_config项目的代码,所以我就顺着css_config的源码往下看,打开css_config发现他的代码很简单,主要做了三件事情:

1. 检查当前windows是否有管理员权限,如果没有则提示并退出;

2.根据当前系统的.NET 版本,以及用户的选择,确认拷贝哪个版本的CSSCriptLibrary.dll到 Lib目录下;

3.调用csws.exe来执行一段cs脚本,以执行更深层次的配置,代码如下:

string csws = Path.Combine(rootDir, "csws.exe");
string configScript = Path.Combine(rootDir, @"lib\config.cs");
args = new string[];
args[] = "/dbg";
args[] = configScript;
AppDomain.CurrentDomain.ExecuteAssembly(Path.Combine(rootDir, @"csws.exe"), args);

后续就顺着config.cs一直往下走,发现整个部署过程的逻辑听复杂,在各种cmd、exe、dll和cs之前绕来绕去的,大致如下图所示,如果有兴趣的话,可以再详细去看具体的代码。

本系列包括:

C#脚本引擎 CS-Script 之(一)——初识

C#脚本引擎 CS-Script 之(二)——性能评测

C#脚本引擎CS-Script之(三)——如何部署

C#脚本引擎 CS-Script 之(三)——如何部署的更多相关文章

  1. C#脚本引擎 CS-Script 之(二)——性能评测

    以下以一个简单的HelloWord程序为例,来分析csscript脚本引擎的性能. class HelloWorld { public void SayHello() { Console.WriteL ...

  2. C#脚本引擎 CS-Script 之(一)——初识

    最近在做新产品,这个产品需要满足不同项目对于系统的定制性数据处理需求,比如有的要统计一段时间内某开关打开关闭了多少次,有的要统计一段时间内空调的使用率,有的希望根据温度来控制空调的开还是关,有的则是希 ...

  3. [19/04/19-星期五] Java的动态性_脚本(Script,脚本)引擎执行JavaScript代码

    一.概念 Java脚本引擎是jdk 6.0之后的新功能. 使得Java应用程序可以通过一套固定的接口与各种脚本引擎交互,从而达到在Java平台上调用各种脚本语言的目的. Java脚本API是连接Jav ...

  4. 【开源】.Net 动态脚本引擎NScript

    开源地址: https://git.oschina.net/chejiangyi/NScript 开源QQ群: .net 开源基础服务  238543768 .Net 动态脚本引擎 NScript   ...

  5. 使用Lua脚本语言开发出高扩展性的系统,AgileEAS.NET SOA中间件Lua脚本引擎介绍

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  6. Nmap源码分析(脚本引擎)

    Nmap提供了强大的脚本引擎(NSE),以支持通过Lua编程来扩展Nmap的功能.目前脚本库已经包含300多个常用的Lua脚本,辅助完成Nmap的主机发现.端口扫描.服务侦测.操作系统侦测四个基本功能 ...

  7. 无法找到脚本*.VBS的脚本引擎解决办法

    当你在运行一些基于VBS脚本语言的文件时,系统可能报错.这时候可能是你的VBS脚本服务在注册表中出错了,原因可能是卸载或安装一些代码不规范的程序引起的.这里给出无法找到脚本引擎"vbscri ...

  8. 脚本AI与脚本引擎

    Scripted AI and Scripting Engines 脚本AI与脚本引擎 This chapter discusses some of the techniques you can us ...

  9. 【Quick 3.3】资源脚本加密及热更新(三)热更新模块

    [Quick 3.3]资源脚本加密及热更新(三)热更新模块 注:本文基于Quick-cocos2dx-3.3版本编写 一.介绍 lua相对于c++开发的优点之一是代码可以在运行的时候才加载,基于此我们 ...

随机推荐

  1. iOS之UI--CAShapeLayer

    关于CAShapeLayer 内容大纲: CAShapeLayer简介 贝塞尔曲线与CAShapeLayer的关系 strokeStart和strokeEnd 动画 用CAShapeLayer实现进度 ...

  2. UVa 104 - Arbitrage(Floyd动态规划)

    题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...

  3. Hadoop系列之(一):Hadoop单机部署

    1. Hadoop介绍 Hadoop是一个能够对海量数据进行分布式处理的系统架构. Hadoop框架的核心是:HDFS和MapReduce. HDFS分布式文件系统为海量的数据提供了存储, MapRe ...

  4. POI教程之第一讲:创建新工作簿, Sheet 页,创建单元格

    第一讲 Poi 简介 Apache POI 是Apache 软件基金会的开放源码函数库,Poi提供API给java程序对Microsoft Office格式档案读和写的功能. 1.创建新工作簿,并给工 ...

  5. android:layout_gravity和android:gravity的区别

    1.首先来看看android:layout_gravity和android:gravity的使用区别. android:gravity: 这个是针对控件里的元素来说的,用来控制元素在该控件里的显示位置 ...

  6. Linux 学习之DNS服务器

    概念: DNS:Domain Name System 域名系统 FQDN:Fully Qualified Domain Name 完整主机名 正向解析:由主机名查IP地址 SOA:开始验证(Start ...

  7. redis master配置了密码进行主从同步

    1.如果master不设置密码,那么直接在slave服务器配置slaveof即可 配置如下 #slaveof ip 端口 slaveof 配置好我们看下redis的日志 看是否同步成功 :S Jan ...

  8. 教你一招 - 如何给nopcommerce做一套自己的主题

    nopcommerce拥有一套不错的模板机制,可以让你快速的做一套属于自己的主题.\Presentation\Nop.Web下面有个Themes文件夹,这里面就是放主题的地方,每个主题对应一个文件夹, ...

  9. 数据持久化之sqlite基本用法

    一.ACID 即原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability). 原子性:整个事务中的所有操作,要么全部完成,要么全部不完 ...

  10. ajax请求json数据案例

    今天有这样一个需求,点击六个大洲,出现对应的一些请求信息,展示在下面,请求请求过后,第二次点击就无需请求.如图所示:点击北美洲下面出现请求的一些数据 html代码结构: <div class=& ...