前几天,我做求婚记的PPT,把它转成了EXE格式。这样做,有以下几点好处:
1 方便没有安装PPT的人观看
2 可以保护PPT的内容不被COPY或者修改
3 便于播放,因为很多PPT里面使用了一些音频、视频资料。PPT里面使用的是相对路径,但是很多情况下,由于在COPY的时候不小心漏掉了资源文件或者COPY的路径不正确。从而导致制作的PPT不能够正确播放。
有朋友问到了我这个问题,怎么把PPT转换成EXE?
下面,我详细地给大家介绍一下我在借鉴别人的方法的基础上,独创的自己的方法。
我在百度上看到一个方法,是使用WinRar打包成EXE,这样做的好处是:
1 简单
不足是:
1 不灵活,必须得把所有文件释放到临时文件夹内,才能在播放结束后让自动删除,否则不能自动删除。如果用NSIS来做包,由于有脚本语言的支持,可以非常灵活。
2 吹毛求疵了,Winrar不是免费软件,得用破解版的才行。NSIS却是实打实的免费开源软件。
3 使用Winrar每次都得重复相同的步骤,并且有一个小步骤漏掉,就会导致生成的EXE不可用,不是很傻瓜化。使用NSIS的话,将脚本编好后,可以无限次重复使用,把PPT打包成EXE的速度会很快。
一、使用的工具(都是免费软件,可以自由下载并使用):
1. NSIS
打包工具,也可以使用其他的安装包打包工具,只要是支持脚本语言的,都会非常好用,非常灵活。
官方下载地址:http://nsis.sourceforge.net/Download
顺便,推荐一款好的NSIS脚本编辑器,叫NIS Edit,官方下载地址:http://hmne.sourceforge.net/
由于NSIS没有提供好用的IDE,所以,使用这款IDE,可以在编辑脚本的时候事半功倍。
这里贴张图吧,为了说明NIS EDIT可以支持中文,需要按F11,或者Menu->View->Option里面,选择‘简体中文’
2. PPTVIEWER 2007
可以从微软的官方网站上下载到
(使用PPTVIEWER 2003也行,但是我觉得2007更好些,毕竟可以支持pptx格式)
二、制作过程:
1. 制作PPT:个人自由发挥。
2. 打包(这里,我贴出我所做的NSIS的脚本):
;产品名称,想改就改,一般情况下,不需要修改
!define PRODUCT_NAME "PPT2EXE"
;版本号
!define PRODUCT_VERSION "1.0"
var OUTPUTPATH
;可以在EXE生成后重命名。
OutFile "PPT2EXE.exe"
ICON "PPT2EXE/1304.ico"
ShowInstDetails nevershow
AutoCloseWindow true
Function .onInit
;播放时,将源PPT释放到的文件夹
;为了不让人发现所释放的地方,可以自由修改一个文件夹
StrCpy $OUTPUTPATH "C:"
SetOutPath "$OUTPUTPATH"
SetOverwrite on
SetAutoClose true
HideWindow
LockWindow on
IfFileExists $OUTPUTPATH 0 +2
CreateDirectory $OUTPUTPATH
File "PPT2EXE/SAEXT.DLL"
File "PPT2EXE/PVREADME.HTM"
File "PPT2EXE/PPVWINTL.DLL"
File "PPT2EXE/pptview.exe.manifest"
File "PPT2EXE/PPTVIEW.EXE"
File "PPT2EXE/OGL.DLL"
File "PPT2EXE/ppt2exe.ppt" ;添加PPT文件
File "PPT2EXE/ppt2exe.mp3" ;添加资源文件
File "PPT2EXE/MSVCR80.dll"
File "PPT2EXE/msvcp80.dll"
File "PPT2EXE/msvcm80.dll"
File "PPT2EXE/microsoft.vc80.crt.manifest"
File "PPT2EXE/INTLDATE.DLL"
ExecWait "$OUTPUTPATH/PPTVIEW.EXE ppt2exe.ppt" ;播放PPT
;播放完成或中途退出播放后,马上删除被释放的文件
IfFileExists "$OUTPUTPATH/SAEXT.DLL" 0 +2
Delete "$OUTPUTPATH/SAEXT.DLL"
IfFileExists "$OUTPUTPATH/PVREADME.HTM" 0 +2
Delete "$OUTPUTPATH/PVREADME.HTM"
IfFileExists "$OUTPUTPATH/PPVWINTL.DLL" 0 +2
Delete "$OUTPUTPATH/PPVWINTL.DLL"
IfFileExists "$OUTPUTPATH/pptview.exe.manifest" 0 +2
Delete "$OUTPUTPATH/pptview.exe.manifest"
IfFileExists "$OUTPUTPATH/PPTVIEW.EXE" 0 +2
Delete "$OUTPUTPATH/PPTVIEW.EXE"
IfFileExists "$OUTPUTPATH/OGL.DLL" 0 +2
Delete "$OUTPUTPATH/OGL.DLL"
IfFileExists "$OUTPUTPATH/ppt2exe.ppt" 0 +2
Delete "$OUTPUTPATH/ppt2exe.ppt" ;删除播放后的PPT
IfFileExists "$OUTPUTPATH/ppt2exe.mp3" 0 +2
Delete "$OUTPUTPATH/ppt2exe.mp3" ;删除播放后的资源文件
IfFileExists "$OUTPUTPATH/MSVCR80.dll" 0 +2
Delete "$OUTPUTPATH/MSVCR80.dll"
IfFileExists "$OUTPUTPATH/msvcp80.dll" 0 +2
Delete "$OUTPUTPATH/msvcp80.dll"
IfFileExists "$OUTPUTPATH/msvcm80.dll" 0 +2
Delete "$OUTPUTPATH/msvcm80.dll"
IfFileExists "$OUTPUTPATH/microsoft.vc80.crt.manifest" 0 +2
Delete "$OUTPUTPATH/microsoft.vc80.crt.manifest"
IfFileExists "$OUTPUTPATH/INTLDATE.DLL" 0 +2
Delete "$OUTPUTPATH/INTLDATE.DLL"
FunctionEnd
Section "MainSection" SEC01
SectionEnd
;当“安装”完成后,再次尝试删除全部被释放的文件以确保所有
;文件确实被删除。
Section -Post
HideWindow
LockWindow on
IfFileExists "$OUTPUTPATH/SAEXT.DLL" 0 +2
Delete "$OUTPUTPATH/SAEXT.DLL"
IfFileExists "$OUTPUTPATH/PVREADME.HTM" 0 +2
Delete "$OUTPUTPATH/PVREADME.HTM"
IfFileExists "$OUTPUTPATH/PPVWINTL.DLL" 0 +2
Delete "$OUTPUTPATH/PPVWINTL.DLL"
IfFileExists "$OUTPUTPATH/pptview.exe.manifest" 0 +2
Delete "$OUTPUTPATH/pptview.exe.manifest"
IfFileExists "$OUTPUTPATH/PPTVIEW.EXE" 0 +2
Delete "$OUTPUTPATH/PPTVIEW.EXE"
IfFileExists "$OUTPUTPATH/OGL.DLL" 0 +2
Delete "$OUTPUTPATH/OGL.DLL"
IfFileExists "$OUTPUTPATH/ppt2exe.ppt" 0 +2
Delete "$OUTPUTPATH/ppt2exe.ppt" ;删除播放后的PPT
IfFileExists "$OUTPUTPATH/ppt2exe.mp3" 0 +2
Delete "$OUTPUTPATH/ppt2exe.mp3" ;删除播放后的资源文件
IfFileExists "$OUTPUTPATH/MSVCR80.dll" 0 +2
Delete "$OUTPUTPATH/MSVCR80.dll"
IfFileExists "$OUTPUTPATH/msvcp80.dll" 0 +2
Delete "$OUTPUTPATH/msvcp80.dll"
IfFileExists "$OUTPUTPATH/msvcm80.dll" 0 +2
Delete "$OUTPUTPATH/msvcm80.dll"
IfFileExists "$OUTPUTPATH/microsoft.vc80.crt.manifest" 0 +2
Delete "$OUTPUTPATH/microsoft.vc80.crt.manifest"
IfFileExists "$OUTPUTPATH/INTLDATE.DLL" 0 +2
Delete "$OUTPUTPATH/INTLDATE.DLL"
SectionEnd
Function .onInstSuccess
HideWindow
LockWindow on
RMDir "$INSTDIR"
FunctionEnd
三、从EXE文件获得PPT源文件的方法
只要知道了释放文件的地址,那么在播放PPT的时候,用Alt+Tab或Win键,跳出PPT全屏模式。然后到那个释放的地址去找就可以了,很简单。
注意,这里千万不能按Esc跳出,否则会马上删除掉PPT源文件。
四、分享我做的模版,并在其中附上使用方法
这个zip中有个“使用方法.txt”,其中的内容为:
带*的为可选步骤
*1 如果有mp3的背景音乐,将其命名为ppt2exe.mp3,将背景音乐和将要制作的PPT放到一个目录下。
2 制作PPT,链接的mp3背景音乐为ppt2exe.mp3。
3 将你的PPT命名为 ppt2exe.ppt。
4 制作完毕后,将ppt2exe.ppt和ppt2exe.mp3(如果有的话)复制到PPT2EXE目录下,替换其中的文件。
5 如果你的机器上没有NSIS编译器,双击nsis-2.44-setup.exe进行安装。
*6 如果你想研究下NSIS脚本,可以安装nisedit2.0.3.exe这个IDE。
7 右键单击PPT2EXE.nsi,选择Compile NSIS Script,生成PPT2EXE.exe文件(在当前文件夹下)。
8 重命名PPT2EXE.exe为你你想要的任何名字。
制作完毕
这个模版的下载地址(是ZIP压缩包,下载后,将名字最后的.bk删除就可以解压缩后使用了):
http://www.rayfile.com/files/7bf84dc7-1c88-11de-a084-0014221b798a/