本文不但介绍了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. Swift 中的函数

    学习来自<极客学院:Swift中的函数> 工具:Xcode6.4 直接上基础的示例代码,多敲多体会就会有收获:百看不如一敲,一敲就会 练习一: import Foundation //函数 ...

  2. linq扩展之动态排序

    前两天看QQ群里面,一位朋友问的问题,说在linq中怎么实现动态排序呢,自己想了半天,没有头绪,网上找了下相关的资料,看了下,收益挺多,记录下来. 之前我们没有如果不知道动态排序的方法的话,我们可能会 ...

  3. android 进程/线程管理(四)----消息机制的思考(自定义消息机制)

    关于android消息机制 已经写了3篇文章了,想要结束这个系列,总觉得少了点什么? 于是我就在想,android为什么要这个设计消息机制,使用消息机制是现在操作系统基本都会有的特点. 可是andro ...

  4. 静态代码检查工具-PMD初学者入门篇

    前言: PMD是一款静态代码分析工具,它能够自动检测各种潜在缺陷以及不安全或未优化的代码. PMD更多地是集中在预先检测缺陷上,它提供了高度可配置的丰富规则集,用户可以方便配置对待特定项目使用那些规则 ...

  5. PS网页设计教程XXX——在PS中创建一个漫画书主题网页布局

    作为编码者,美工基础是偏弱的.我们可以参考一些成熟的网页PS教程,提高自身的设计能力.套用一句话,“熟读唐诗三百首,不会作诗也会吟”. 本系列的教程来源于网上的PS教程,都是国外的,全英文的.本人尝试 ...

  6. jdbc至sql server的两种常见方法

    Statement和prepareStatement sql server中已建立BookPhone数据库,包含bookPhone表,eclipse中有BookPhone类,三个string类型的值 ...

  7. jsp页面img利用tomcat配置访问服务器绝对路径显示图片

    1.打开tomcat下的server.xml文件,路径\apache-tomcat-7.0.62\conf文件夹下. 2.下<host></host>加入<Context ...

  8. Windows系统镜像自动添加驱动程序

    2016年到了一家公司做网管,经常会为了装系统而烦恼,后来学习了WDS自动部署,但是在学习过程中发现启动镜像boot.wim中没有网卡驱动 导致wds报错,后来经过网上查找相关资料学会了如何向系统里添 ...

  9. C++ 第一个C++程序

    #include <iostream> // C++自带的标准头文件都是没有.h的 // 就相当于C语言的<stdio.h> // 提前使用命名空间std using name ...

  10. Mysql如何清空数据库的所有表数据

    1.先查询出库中的所有表,“db”是数据库名称 SELECT CONCAT('truncate table ',TABLE_NAME,';') AS a FROM INFORMATION_SCHEMA ...