C#脚本引擎 CS-Script 之(三)——如何部署
本文不但介绍了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 之(二)——性能评测
以下以一个简单的HelloWord程序为例,来分析csscript脚本引擎的性能. class HelloWorld { public void SayHello() { Console.WriteL ...
- C#脚本引擎 CS-Script 之(一)——初识
最近在做新产品,这个产品需要满足不同项目对于系统的定制性数据处理需求,比如有的要统计一段时间内某开关打开关闭了多少次,有的要统计一段时间内空调的使用率,有的希望根据温度来控制空调的开还是关,有的则是希 ...
- [19/04/19-星期五] Java的动态性_脚本(Script,脚本)引擎执行JavaScript代码
一.概念 Java脚本引擎是jdk 6.0之后的新功能. 使得Java应用程序可以通过一套固定的接口与各种脚本引擎交互,从而达到在Java平台上调用各种脚本语言的目的. Java脚本API是连接Jav ...
- 【开源】.Net 动态脚本引擎NScript
开源地址: https://git.oschina.net/chejiangyi/NScript 开源QQ群: .net 开源基础服务 238543768 .Net 动态脚本引擎 NScript ...
- 使用Lua脚本语言开发出高扩展性的系统,AgileEAS.NET SOA中间件Lua脚本引擎介绍
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- Nmap源码分析(脚本引擎)
Nmap提供了强大的脚本引擎(NSE),以支持通过Lua编程来扩展Nmap的功能.目前脚本库已经包含300多个常用的Lua脚本,辅助完成Nmap的主机发现.端口扫描.服务侦测.操作系统侦测四个基本功能 ...
- 无法找到脚本*.VBS的脚本引擎解决办法
当你在运行一些基于VBS脚本语言的文件时,系统可能报错.这时候可能是你的VBS脚本服务在注册表中出错了,原因可能是卸载或安装一些代码不规范的程序引起的.这里给出无法找到脚本引擎"vbscri ...
- 脚本AI与脚本引擎
Scripted AI and Scripting Engines 脚本AI与脚本引擎 This chapter discusses some of the techniques you can us ...
- 【Quick 3.3】资源脚本加密及热更新(三)热更新模块
[Quick 3.3]资源脚本加密及热更新(三)热更新模块 注:本文基于Quick-cocos2dx-3.3版本编写 一.介绍 lua相对于c++开发的优点之一是代码可以在运行的时候才加载,基于此我们 ...
随机推荐
- IOS学习资源收集--关于动画的代码学习资源总汇(很棒的动画效果哦)
目录大纲: 1.很棒的iOS加载动画. github网址:https://github.com/NghiaTranUIT/FeSpinner 游老师的译文blog:http://www.cnblogs ...
- 网络请求的基本知识《极客学院 --AFNetworking 2.x 网络解析详解--1》学习笔记
网络请求的基本知识 我们网络请求用的是HTTP请求 Http请求格式:请求的方法,请求头,请求正文 Http请求的Request fields:请求的头部,以及被请求头部的一些设置 Http请求的 ...
- SQL之 CAST 和 CONVERT
原文来自于: http://bbs.csdn.net/topics/330251394 CAST 和 CONVERT将某种数据类型的表达式显式转换为另一种数据类型.CAST 和 CONVERT 提供相 ...
- Jmeter之Http Cookie Manager
一.Http Cookie Manager的作用: 1.自动管理cookie:象浏览器一样的存储和发送Cookie,如果发送一个http请求他的响应中包含Cookie,那么Cookie Manager ...
- HTTP 协议中的 Content-Encoding 和 Transfer-Encoding(内容编码和传输编码)
转自:http://network.51cto.com/art/201509/491335.htm Transfer-Encoding,是一个 HTTP 头部字段,字面意思是「传输编码」.实际上,HT ...
- 虚拟机centos6.5 --设置静态ip
编辑网卡文件,vi /etc/sysconfig/network-scripts/ifcfg-eth0修改以下内容: ONBOOT=no #改为yes, BOOTPROTO=dbcp #改为stati ...
- UVA 10827 Maximum sum on a torus (LA)
算法入门经典训练指南88页练习 ::这道题只要把原矩阵扩大4倍,那么其跟最大子矩阵的题目就很类似,把二维转化成一维,求最大的序列和,不过这个序列的长度不能超过n. 长度不能超过n? 那这道题又跟hdu ...
- Redhat6.5 安装64位oracle11.2.0.1
系统架构 [root@localhost ~]# uname -a Linux db 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 2013 ...
- virtualbox 在window10上的兼容性调整
更新完windows10后,打开当时的virtualbox 4.3.3已经是最新的啦,打开原来安装的几个虚拟机(hadoop),发现均失败. 打开setting一看,网络一栏有问题,桥接模式的虚拟机都 ...
- 动手学习TCP:服务端状态变迁
上一篇文章介绍了TCP状态机,并且通过实验了解了TCP客户端正常的状态变迁过程. 那么,本篇文章就一起看看TCP服务端的正常状态变迁过程 服务端状态变迁 根据上一篇文章中的TCP状态变迁图,可以得到服 ...