简易语言

数字沟通

 

打包——launch4j

 

这次讲的就简短了,launch4jjsmooth强多了,但也不是我们的研究重点,我主要用它来生成exe,再用izpackinstalljammer打包。

   launch4j也是开源软件,所以可以上http://sourceforge.net下载。安装好后,把C:"Program Files下你安装jdkjava文件名改了,再打开launch4j发现打不开,证明这个软件是依赖java环境的,它本身包打得很小。改回java文件夹的名字,再打开,发现启动界面很漂亮,你的软件也有望成这样了。上次有一点没讲清楚,jsmoothjre路径那就是告诉jsmooth用此jrejvm(大家都知道class的运行靠的就是jvm),而不用再搜寻jdk等中的jvmJsmooth中一栏是jvm查找顺序就是在不自己带上jre的情况下搜寻客户机的jvm的策略。这儿同样要jre进行同样的动作。好,现在就让我们来生成一个不依赖客户机java环境的exe

  前提准备:

  把jdk中的jre复制到你要打包的文件夹(我的是Java2D)下,要打包的jar,这儿用jdkdemo中的Java2Demo.jar,一张bmp图片j2d.bmp,一个ico文件,如图


   你需要填写的也很少。

1.       basicjar一栏找到你的jar,安照同路径给你的exe起名字。在Icon一栏找到你的ico


2.jre一栏写上./jre表示当前路径(launch4j聪明多了,记住你的路径)


 3.Splash一栏的Enable splash screen 打上勾,下面选出你的bmp,估计你软件的启动时间,然后填上比这个时间大的时间。如下为5。这个bmp就是你的启动画面


可以生成了(其实你可以不填
bmp,ico就生成,软件可还贴心)。点击工具栏的齿轮图就生成了。结果如图


多了一个
exe就是你所需。点击就看到启动画面,如下

下次讲
izpack。开始比较有意思了。

posted @ 2008-11-19 23:11 yangyusong 阅读(9805) | 评论 (8)编辑 收藏

打包——JSmooth

 

在这之前已经有很多人讲过怎么用JSmooth了,如BeanSoft还贴了自己的视频,网址是: http://download.gro.clinux.org/beansoft/JSmooth_zh_CN.swf  大家记得去参考,做的挺好的。

 写这篇文章一是为了完整性,再一个一步一步过来比较自然,先学会简单易用的,思维也容易清晰。很多的文章也免不了千篇一例,过来看看我的见解还是值得的,呵呵。

 其实这款小软件真是一堆一堆的漏洞,但还是勉强可用,作为开源打包的入门软件。通常都用JSmooth 0.9.9-7版本的,看看下面的图


 
是我们的beansoft翻译的,上次说过了,有问题可要请教他呀。

   先别急着动手,先说学完咱们可以做啥,一个是你可以生成一个有exe壳的jar应用程序,其实就是在你的包里多了一个exe文件,其他的依旧在,不要以为拿着你的exe就出去用了,脱离了你的这个jar,你的这个文件结构就玩完了,甚至脱离了你本地机的java环境就没戏了。你不能要求客户都安装jdk吧,人家不想搞研发。别灰心,看完本文你就知道怎么脱离java环境了(只是脱离本地机java环境哦,不是脱离你的那个包结构,还没那么智能的)。虽然是很简单,可当初我也是不了解。几个人硬没弄出一个脱离java环境的,加上小软件经不起蹂躏,然后不得不怪软件是中文版的,还动手用c来生成exe调用巨大的jdk,然后脱离本地机java。转了一圈回来才理解了怎么回事。之所以说它经不起蹂躏就是你不要对着上面的按钮哗啦哗啦的点,一不小心,它不反应了,你的从新打开,次数开多了,说不定每次都不让你看某些界面。除非你重启。或者正常的某个功能就是不理你了,或者生成的时候忘了敲上exe而不得不从来。所以蹂躏对软件和你都没好长。

 下面分两部分,一部分教你用最简单的方式打出exe,体会一下成功的快乐。一部分教你加上jre脱离本地机java

  

 前提,你有java环境(安装了jdk

 最简单的exe打包

 其实最简单的打包只要写三个地方就可以打了,而你可以对着一个jar文件就打成你的exe,有一点就是你要知道jar里的主类是谁,不知道这个概念就问问别人。那么开始吧,讲的算细了。

 打开绿色软件中的jsmoothgen.exe就开始了。这里以打Java2Demo.jar为例(在jdkdemo里有,我就不提供了),

1.       点击 骨架,选择Windowed Wrapper (表示打的是windows下的,左边栏从上到下就一打包流程,很多都没用上,也没细究。移动鼠标到“?”,人家告诉你该做什么。别太兴奋。)


2.点击 可执行文件,点击红线处的按钮找到你的jar文件,记得换后缀为exe,如图


3.       点击 应用程序,点击classpash 那一栏右边的加号,把你的jar加进去,然后点击红线处,弹出的框中只有一个文件夹,双击打开,直到找到你的主类为止,点击 select 确定,如下两幅图所示


开始生成吧,点击工具栏里的小齿轮,弹出对话框,路径就选在你打包的文件下(好像是必须的),写上名称,如图,确定即可在你的包里看到这个exe


打开
E:"Java2D看到


  其中
j2d.jsmoothjsmooth生成的配置文件,Java2Demo.exe即你要的,点击试试,看能不能用,然后把exe剪切到其他地方看能不能用,放回来,把C:"Program Files下的java文件夹改名字(注意把用到java虚拟机的软件都关了),看exe还能不能用。(别忘了改回来。)

结果清楚了exe不能和jar分离了,也不能离开jvm环境,下面我们就让他脱离本机java环境。这样的exe可以为我们进一步的打包奠定基础,所有它是有用的。

准备条件:把你jdk下的jre考到和jar同一个目录,要图标就找好一个“.ico”的文件三个放同一文件夹下

下面开始:

1.       和刚才一样,点击 骨架,选择Windowed Wrapper

2.       点击 可执行文件,找到你的jar文件,记得换后缀为exe,同样找到包里准备好的ico文件如下图

这就看到一个bug了,我选的ico它显示为另外一个以前同名的ico,即使我改了它的名,其实还有另一点令人不舒服的,就是每次点击找路径都从头找,它不帮你记下。另外注意一点我一来点了保存,把j2d.exe.jsmooth存到了e:"java2D下,所以你看到的路径很短,


    3.和刚才一样找到jar放到classpath里,然后找到主类,(注意顺序性)


4.点击 jvm选项 ,在jvm捆绑包那选上复选框,点红线处找到jre路径并确定。如图


选择了
jre

5.开始生成吧,点击工具栏里的小齿轮,弹出对话框,路径就选在你打包的文件下,写上名称,如图,

确定生成

exe是你要的,这里要抱歉一下,它的bug所致,ico用的不是我当前的ico,但也没什么影响。J2d.bmp什么的是不必要的,下一节才用上,点击exe看,把C:"Program Files下的java文件夹改名字再试一次,噢,可以了,呵呵。Jsmooth 的其他选项就考各位补充了,俺不太明白了,谢谢各位。下次讲launch4j打包。

posted @ 2008-11-19 22:02 yangyusong 阅读(5658) | 评论 (3)编辑 收藏

打包——InstallSheild之InatallScript

 

上次讲了InstallSheildasistant的方式,你跟着弄就打处一个包来了,验证一下是否符合你的设置,就是安装一下看看。这就不多说了。

上次的解说你可能已经迫不及待要看看Installation Designer的方式。别急。

   很多时候我们只需要照着一个简单的示例做一次成功,就能体会到达成一间事的最简单方式。所以这次改一下结构,讲解和操作分离,凡是操作的部分都写成 xx操作:”后面跟上本示例操作,xx表示步数,其实有的步是不必要的。你要亲自动手看有此标签的部分就行。有多余的需求和想了解在看具体讲解。用标签 “讲解:”表示具体讲解。

   下面开始

    1操作:打开InstallShield x 又看到起始页,如下图:

  讲解:要是没有,你就新建一个。要删除项目,通常是关闭InstallShield x,然后到ism所在的文件夹删除整个文件夹就行。


    2操作:点击TTPlay.ism打开上次建的项目,如下图:

  讲解:看到如下图,如果看到的不是,你就点一下标签页Installation Designer,看到这个界面,我们应该很高兴,面熟呀,这不和vc6.0的和相似么。其实用法、语法也很相似,红线圈住的部分是下一步操作的


3操作:点击上图左边树状目录中红圈中的部分,看到如下图:

讲解:左边的目录也是九个,对应项目助手的九个步骤


    4操作:右击中间目录中的,看到如下图:再点击Make default,那么默认就是中文了。

  讲解:红勾就到了Chiness选项,上次的问题就解决了,再次安装是看到的就是中文了,不信可以点击编译、链接,执行试试,和vc一样,这两个图中都有,自己试试。

  点击Project Properties,可以看到,保存配置的方式是xml,其他信息都是默认配置或你在工程助手那填写的。


  所有东西到要安装,不需客户选择,那么可以如下操作

    5操作:点击左边目录的Setup Types ,看到中间目录,右击Complete选项,点击Remove删除

  讲解:你说为什么不删除Custom因为Custom里才可以让客户选择安装路径。


    6操作:点击左边目录的Files and Folders,展开中间部分下边栏中的Application Target Folder目录看到如下图

  讲解:Destination computer’s folders栏里的各目录在同上节添加文件是所看到的弹出目录含义相同,参看上节,在这儿你可以展开source computer’s folders中我的电脑,直到找到你要打包的文件夹,拖到下边栏中的Application Target Folder目录就行,也是比较浪费时间(他要搜索你的整个结构进去),和使用工程助手添加文件夹的效果相同,但显然这样感觉更方便,尤其是有多个文件夹并列时(很多时候你不想要很深的目录,公司名文件夹下、软件名文件夹才到你拖进来的文件夹,可能你的好几个文件夹都只想做公司名文件夹下的子文件夹,那么想上次讲的你可以不写软件名,然后再这多次拖动并列的这几个文件夹。)。在具体的,有少量文件变动你可以点击有文件变动的文件夹,在最右边上面的文件拖到下面的相应位置。变动比较大,建议你就吧下边栏中Application Target Folder里的文件目录都删掉再重新拖进去


    7操作:点击Shortcuts 展开中间栏的ttplay目录,展开中间栏的Desktop目录并点击TTPlayer.exe1看到如下图(这一步可以省去,只是看一眼就行,谨慎行事就在看讲解)。

  讲解:没有的话,你就自己在这儿建,相信你会需要这样建而且也很方便,没有快捷方式的话,可能你看到的只有Programs Menu 那么你就右击Programs MenuNew Folder新建文件夹(就是在开始菜单中的文件夹,一个文件夹中有可若干个选项调用不同的exe,然后对文件夹起名字(最好用你的公司名,要是改名,按F2就行了)然后右键点击这个刚建的文件夹,点击New Shortcut 新建你的快捷方式并起上名(也是弹出一个框,你找到你的exe,但名字是要自己给的)。要注意的就是起好名字后点击这个快捷方式,在最右边的wording Directory填上你的工作目录,要不产生的快捷方式找不到你的exe,如果是Desktop就填上<DesktopFolder>,如果是Start Manu就复制Target中的目录不到xxx.exe,而是它的上层目录。如<TARGETDIR>"TTPlayer"TTPlayer.exe就只复制<TARGETDIR>"TTPlayer贴到Working Directory,Display name改为你的软件名,这个名字将显示在快捷方式里,如这儿改成TTPlayer


    8操作:点击Registry,如下图(只一步也可省去)

  讲解:和Files and Folders一样,中间一栏上面是本机的,下面是对应的,要注册什么在本机上新建了,拖到下面就行了,也都点右键新建同名文件夹直到最下层,拖动你刚建的名值对就完了。


  讲解:
Server Configuration中的两项是iisSQL Server2000,我们都不用,也都很简单。跳过。

    9操作:点击InstallScript 看到如下图


  讲解
:这是重点,这里可以添加代码来修改环境变量、添加验证、添加调用等。这儿只会讲到添加环境变量,添加调用会在讲开源软件是讲。具体语法讲解只有InstallSheild 5的,从哪个网站下,忘了,刚搜了一下,感觉这个网站应该能下:http://cio.ccw.com.cn/qtzl/htm2008/20081018_523911.shtml 不行你就到google 输入 installshield 丁有和”。

  复制其中的部分代码如下:

Dlg_Start:

    nResult = 0;

Dlg_SdWelcome:

    szTitle = "";

    szMsg = "";

    //{{IS_SCRIPT_TAG(Dlg_SdWelcome)

    nResult = SdWelcome( szTitle, szMsg );

    //}}IS_SCRIPT_TAG(Dlg_SdWelcome)

    if (nResult = BACK) goto Dlg_Start;

Dlg_SdLicense2:

  很显示它的语法挺简单,大致你也能猜到,这儿是三个对话框,都是用标签的方式,说明我们要跳来跳去,不错,if (nResult = BACK) goto Dlg_Start;就是通过一个判断调回上一个对话框。Dlg_Start即开始对话框,Dlg_SdWelcome即欢迎对话框。nResultszTitle等都是变量,并非弱类型的变量,前边有定义。

废话不多说,我们要加上一个环境变量,

    10操作:对着有代码那一栏拖动滚动条到最下面看到最后一个end为止,在它的下一行粘贴如下代码:

function OnEnd()      

string mypath, szKey, szEnv;        

POINTER pEnv;  

begin                

 mypath=TARGETDIR;     

 szKey="Environment";  

 RegDBSetDefaultRoot(HKEY_CURRENT_USER);     

 RegDBSetKeyValueEx(szKey,"mypath",REGDB_STRING,mypath,-1);  

 szEnv = "Environment";  

 pEnv = &szEnv;  

 SendMessage (0xffff, 0x001A , 0, pEnv );  

 // MessageBox("设置了环境变量mypath ",0);

end;

  讲解:要调用函数就的在那些对话框中找个位置插入这个函数,这儿就找“Dlg_SetupType2:”标签

    11操作: 找到“Dlg_SetupType2:”标签,在其后新加一行 OnEnd();

讲解:此时应该点一下Complile,编译一下(和用vc一样来使用),若有错会和vc一样在下面报出,双击错误到出错行,如果你是复制代码过去的,很可能是字符编码不一致的问题。特别是中文和空格,那么去掉每行前面的空格可能就去了大部分的错误,有中文的行最好去了,自己再敲一次,实在不好解决的就全去了再全部敲一遍。

  注释方式和c,java的一样,这儿把后面那个注释去了,运行到那时就会那个弹出对话框。内部函数查帮助,语法和常用函数看我刚才介绍下载的讲解。

  这里边还有调试运行,好像不能加断点,全都是从头至尾的走。但同样有跳出函数,停止调试等常规操作。

    12操作:点击Dialogs(可以省去),看到如下图:


  讲解:在
Skin里有多种风格的皮肤,通过右键点击来选取。All Dialogs里有从开始安装到结束安装的各种可能用上的对话框,通过双击可以在这里改变这些对话框的结构。当然标志installshied可不好去,最好也别去,谁叫你用人家的产品。这些对话框的引用可以在前面的InstallScript代码来引用。如Welcome对话框就用“Dlg_SdWelcome:”标签来引用。

    13操作:点击编译。(与vc一样)

  讲解:ok,本次操作结束。到你创建的目录下就能找到setup.exe点击安装试试,或者点InstallSheild x里的运行。也行。


  如果加了环境变量,就能找到,如我这儿添加了
mypath= C:"Program Files"JoinusRip,看看你的。有问题提问。

  这次一个13个操作(可能还不要或者更多一点)你就用InstallSheild x打包好一个软件,不到两分钟。你可能急了,说我只帮你解决了添加环境变量的问题,你还有很多要求,要求调用其他软件先安装呀什么的。其实大部分情况这些已经差不多了。你的问题也许可以换种方式,要不你自己正是很不轻松,尽管你及其勤奋。要先安装其他软件,你可以通过选择安装对话框加说明让用户先安装你要求的。这种对话框你可以通过另外的打包软件处理,要不去记InstallSheild的一堆语法,不一定吃得消。我也不敢讲一堆,更主要的原因是,这可不是免费的软件,你用了说不定哪天律师就来找你了,所有你仅仅体验一下明白打包的一个大体过程就可以了,学问有相似之处,再学其他的也就不那么难了。除非你公司买了InstallSheild,否则你就先把它扔一边吧,我们有更好的开源软件,虽然一下子讲不到最好的。

  提醒一下,如果你运行了刚打好的包,或打开了包所在的文件夹,此时编译会过不去,总提醒一个错误,还有InstallSheild x有很多bug,不行了,你就删除从来。有人翻译了InstallSheild2008的部分,当然帮助没翻译,你可以下来看看都什么意思,但想使用好像不是很现实。当然要学好就得看英文的,很多人都习惯了看英文的帮助,但一下子要看明白并操作许多也还是花点时间的。另外所有的部分都是用例子来讲,不会面面俱到,要深入必须再花时间看帮助,相信有了例子,再看帮助的时候理解的就多了。

  下次进入开源,最简单的jsmooth,中文版翻译是刘长炯,这次我惨了。希望他没写相关的,要不撞车了。

posted @ 2008-11-17 01:14 yangyusong 阅读(1504) | 评论 (2)编辑 收藏

打包——installsheild之Assistant

 

  经简绍说installsheild不错,打包方便快捷,于是要来软件,安装的是InstallSheild x英文版。

如下图,这是打开的见面,红线是我画上的,点击这条语句就开始新建工程了。


  弹出对话框中默认的
InstallScript Project(如下图) 正是我们所需(以Script的方式来完成更多任务)。填入你要打包的项目名,和要释放的位置(打成的包要放的位置),(什么?你说我打的怎么是TTplay,不好意思,TTplay确实是别人的,要先试验再动真格的,要不就元气大伤了。把安装了的TTplay打成包不是很简单的试验方式么。一来就把你几百兆的软件拿过来打,又慢风险又大。你也不知道刚用的软件会发生些什么事故,保险起见,把安装在你电脑里的整个TTplay的文件夹考到一个地方备用。才2点几兆,尽情试验吧)。点击Ok进入下一步。


  于是你就见到了
Project Assistantinstall Designer.如下图所示
  我们就叫
Project Assistant为工程助理吧,用工程助理就可以完成一般的打包工作,只要点击最下排图标,从左至右来按向导填写就行,网上应该有简绍的,但我还是要唠叨,好像这儿会更有特色。你也完全可以在install Designer里全部完成,但通常都是结合着用。


    Project Assistant共九步形成一个安装流程。

点击第一个Application Files,如下图

以此是公司名称、应用软件名称、版本、公司首页。最后的选项是是否自动提醒更新。

生成的软件安装后会以你的公司名为文件夹,应用软件名称为其子文件夹,接着是你的放进去的文件夹(后面会讲到),很多时候你可能不需要这么多文件夹嵌套,像我打包的文件夹就不要应用软件名称,否则,所设置的环境变量就不好处理了,但这的试验就不用管了,后面具体讲。你要根据你所需的文件结构来决定。


  点击
installation Architecture,如下图,只有一个选择项,问你是否要个性化安装,意思就是可以选择部分安装,我们就不管了,我们都是要全装的,哈,而且这儿也很简单。(还是说说吧,点选yes,点击New,添加文件夹,取个名字,Set Default来设计你选定要做默认安装的,下一步骤是选定你要打包的文件,其中All Application下拉框选项就会发现刚才你new的文件,选定谁,当前放进的包就属于它了,好像有点抽象,看看想想就应该明白了)


  点击
Application Files看到如下图

我们要全安装所以用All Application Data,下面的Destination Computer中的重点文件夹是Application Target Folder,其意义就是客户所选路径+公司名+软件名这样一个路径。

Program Files 是绝对路径“C:"Program Files”群里有哥们为要放一些文件到这个绝对路径,问了几天人,告他用Indesigner中的Program Files,他没明白,效果和项目助手的一样。

Windows也是绝对路径,“C:"WINDOWS”下属分别为“C:"WINDOWS"Fonts”和“C:"WINDOWS"system32


  这儿还没操作呢,开始操作,点选
Application Target Folder,点击Add Folders 选定你打包的文件夹,确定就会在Application Target Folder里显示你的文件结构,这可是个慢动作,文件越多就越慢,实际它只是记录了你的文件结构,并非复制。结果如下图:

如果你看不到,很正常,这是它的一个bug,点一下其他的步骤,再点回来就看到了(点回来有时也要你一些时间,bug呀)


  点击下一个步骤
Application Redistributables,如下图:

就是问你用不用ODBCsql Server 2000 等等的,都不管了,我们喜欢用开源的。


  点击下一步骤
Application Shortcuts,即应用程序快捷方式,如下图


  它自动帮你提起你所给文件夹下的
exe,你的软件要没exe就先生成exe,以后会讲到

  你的问题出来了,要是exe不在所给文件夹下怎么办,你就点new,弹出窗口展示的是DefaultFeature里的文件分类(如下图),文件分类和前面讲的一样,Application Target Folder 是客户所选路径+公司名+软件名这样一个路径……回忆起来俺就不废话了。大部分情况点击Application Target Folder到你提供的文件夹里找到你的exe就有了。


  点选你的
exe,然后在右边的复选框选择是否创建开始菜单快捷方式和桌面快捷方式(看下图)。点选并删除你不用的exe。你可能觉得这样方式真好,后面你会发现工程助手的方式不如Install Designer 的方式好,工程助手可能会令你反复弄来弄去。


  下一步
Aplication Registry,如下图:

你就需要选择一个根目录,然后不断点右键新建选项,最后定变量—数值对就行


  如下图,新建一次后,再次新建里就可以新建各种值,或者选择导入
Reg的方式,具体自己研究了。也是Install Designer 的方式更好。这儿什么都不需要注册,把刚加的删了。


  下一步
Installation Interview 如下图:

共四个选项,第一个选项是是否要license,是的话你要提供一个txtlicense或者写一段脚本来处理。我们选择否。

第二个选项是是否填入公司名和用户名,不用了,我们这不用那么麻烦客户。

第三选项说是否让客户选择安装目录,默认就行(yes)。

第四选项说是否同意客户只安装部分。也默认就行(yes)。


  下一步骤
Installation Localization 安装本地化,如下图:

选上简体中文。All String Data等功能和All Application Data的意义是一样的就是看你要整个处理还是安装某部分才这样处理。我们用默认的就行。


  最后一步
Build Installation 就是生成你的软件了。如下图:

三个选项意义就是生成单个执行文件、网络版、光盘版。

点击Build Installations就开始建造了。这个过程也有点慢,毕竟要把所有文件存储到一个dat文件里。


  结果如下图:


  点击
setup.exe就可以安装了。

当然这样的效果可能不如你想象的好,例如点开可能是英文的,你就急了,不是本地化了吗?你忘了看,同时选中的English上有个红勾,表示它是默认语言,要么你把英语的去掉,要么你上Install Designer处理。

如果你已经安装过这个setup.exe,再次点击时它就会提醒你是要修改、修复还是卸载,如下图:


  这就是
InstallSheild用向导打包软件的简单过程。你应该知道有exe的软件怎么打包了,下次讲InstallSheildinstall Designer的方式,它能满足你更多的需求。能解决你在工程助手这令人抓狂的问题。

错漏之处,谢谢指正。

posted @ 2008-11-16 01:50 yangyusong 阅读(2056) | 评论 (4)编辑 收藏

打包安排

   这里将讲述一些打包软件的使用,以最简单的方式一步一步完成简单的打包,并能从中感受到乐趣。能深入的地方也会渐渐深入,总之,本专题目的是让你在很有乐趣的同时学到一点异样的东西。
    从第三方软件到开源软件,当然重点是开源软件,开源软件给了我们许多有用的资源,而我们总是由于语言等种种原因而不能很好的利用,查查izpack,中文资料极少,查查installjammer,中文资料都是只有个标题,或说自己用过觉得不错的。installjammer是日本人写,传到美国然后才传开来的,是一款极强的开源软件,后面具体讲述。

   下篇从installshied开始正式进入主题。(这篇文章很短,也许影响了你的情绪,不好意思,哈,希望下篇不会令你失望)

posted @ 2008-11-15 22:16 yangyusong 阅读(230) | 评论 (0)编辑 收藏

今天开始写blog 欢迎各位指导

   今天开始写我的专业blog吧,作为一种交往,一种兴趣爱好和一种斗志吧。好像写打包的人挺少,我打算先写打包的专题,然后再写各种各样我感兴趣的专题,当然,算法、策略、架构会更有意思。希望我会写下去。希望大家多多指点,相比各位写的,我的就算饭后休息的闲书了,但闲书有闲书的好处,通俗易懂、放松打脑。能为语言做一点贡献,其实就足。
   请看下篇,打包安排。

posted @ 2008-11-15 21:54 yangyusong 阅读(1155) | 评论 (11)编辑 收藏

仅列出标题
共2页: 上一页 1 2 

导航

统计

常用链接

留言簿(3)

随笔分类

随笔档案

文章分类

搜索

最新评论

阅读排行榜

评论排行榜