1、在 Microsoft Visual Studio 2005的“文件”菜单上,单击“新建”,然后单击“项目”。
2、在“新建项目”对话框中,选择“其他项目类型”,再选择“安装和部署”,然后在模板中选择“安装项目”。
3、键入 TestSetup 作为该程序的名称,然后单击确定。
4、添加安装需要的文件:
点击“文件系统”的“应用程序文件夹”,在右边框中点击鼠标右键,选择“添加”,选择“文件”,然后选择需要部署的文件。本例选择test.exe文件(如果该程序运行时还需要别的文件,则一起选择)。
5、在“开始”菜单上建快捷方式:
A、点击“文件系统”的“用户的“程序”菜单”,在右边框中点击鼠标右键,选择“添加”,选择“文件夹”,文件夹的名称为“程序员”。
B、点击“程序员”,在右边框中点击鼠标右键,选择“创建新的快捷方式”,查找范围选择“应用程序文件夹”,选择test.exe文件,然后确定,更名为“程序员秘书”。
6、在“桌面”建快捷方式:
点击“用户桌面”,在右边框中点击鼠标右键,选择“创建新的快捷方式”,查找范围选择“应用程序文件夹”,选择test.exe文件,然后确定,更名为“程序员”。
7、安装后自动运行程序:
A、使用下面的代码创建一个 auto.vbs(auto名称可以随意) 文件:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run """" & Property("CustomActionData") & """",1,False
Set WshShell = Nothing
B、打开安装项目并转到“自定义操作编辑器”。
C、选择“提交”节点;右击并添加一个新的“自定义操作”。
D、浏览文件系统以添加您在步骤 A 中创建的 auto.vbs 文件。
E、auto.vbs属性框的“CustomActionData”属性[TARGETDIR]test.exe
8、选择TestSetup项目,在属性框中修改,Author为“鲁勤俭”,Manufacturer为“程序员秘书开发小组”,ProductName为“程序员”,Title为“程序员”。
10、给快捷方式添加图标:
A、点击“文件系统”--“用户的程序菜单”--“程序员”,在右边框中点击鼠标右键,选择“属性窗口”,点击“Icon”--“浏览”,在图标对话框中,点击“浏览”,文件类型选择“可执行文件(*.exe)”,应用程序文件夹中选择test.exe文件(注:test.exe项目编译时要选择有图标才行,也可以直接在磁盘上选择一个图标文件),确定,如果有多个图标,选择一个图标,确定。
B、同理给“用户桌面”的“程序员”的快捷方式添加上图标。
11、创建卸载链接:
方法一
A、在安装项目目录中,创建一个新的 Uninstall.bat 文件。
B、在安装项目中,复制“ProductCode”属性(一个类似 [12345678-1234-1234-1234-123412341234] 的值)。
C、编辑
编辑 Uninstall.bat,以便让其中一行包含以下内容(其中,ProductCode 是您在步骤 2 中复制的值):
Msiexec /x ProductCode
D、将 Uninstall.bat 添加到安装项目的应用程序文件夹。
E、右击 Uninstall.bat 并选择“创建快捷方式”以创建快捷方式。
F、将快捷方式放在安装项目中相应的“开始”菜单文件夹中。
G、将快捷方式重命名为类似于“卸载 程序员秘书”,将属性ShowCmd设为vsdscMinimized。
方法二
或将:C:/WINDOWS/system32/msiexec.exe加入文集并创建msiexec.exe 快捷方式 将Arguments属性值设定为 /x + {ProductCode}
12、编译
附录==关于 shell的参数==========================================================
vbScript 中 WScript.Shell 对象的 run 和 exec 函数功能使用详解
函数声明:
Set Ws = CreateObject("Wscript.Shell")
Function Exec(ByVal Command As String) As WshExec
Function Run(ByVal Command As String, [ByVal WindowStyle], [ByVal WaitOnReturn]) As Integer
函数区别:
1,返回值不同
Run 的返回值是一个整数,就是0或1成功和失败两个状态,而 exec 方法的返回值是一个对象,从返回对象中可以获得控制台输出信息和控制台错误信息,即 StdOut 和 StdErr 属性等。
如:
Dim oShell,exeRs
Set oShell = CreateObject("WSCript.shell")
commandLine = "xcopy.exe"
Set exeRs = oShell.Exec(commandLine)
errMsg = exeRs.StdErr.ReadAll()
stdMsg = exeRs.StdOut.ReadAll()
WScript.echo "errMsg:" & errMsg & "stdMsg:" & stdMsg
ret = oShell.run(commandLine, 0, true)
WScript.echo "run method return value:" & ret
Set oShell = Nothing
Set exeRs = Nothing
可以取道控制台错误和控制台信息。
附记:WshExec 类具有属性 ExitCode,ProcessID,Status,StdErr,StdIn,StdOut 以及一个函数 Terminate,这些属性和函数都很好理解。
Status 属性具有三个值:
Const WshFailed = 2
Const WshFinished = 1
Const WshRunning = 0
2,执行参数
Run 的后两个参数,一个是 cmd 窗口的风格,一个是是否等待执行完成。
最后一个参数很有用,如果你希望等待本次 cmd 执行的程序结束后,再执行run后面的语句,设置这个参数为true,否则后面的语句将不等待cmd窗口完成,直接运行。
另外,如果你使用 exec 方法的时候,如果希望等待cmd中程序执行完后,再执行后面的语句,也可以通过下面的方法:
oExec.StdErr.ReadAll() 或者 oExec.StdOut.ReadAll()
道理上也应该好理解,要得到输出的信息,肯定要 cmd 执行完后才会有输出的。
Ws.Run 函数的参数:
Set Ws = CreateObject("Wscript.Shell")
Ws.run "notepad.exe",,
run 函数有三个参数:
第一个参数是你要执行的程序的路径,若路径中存在空格,记得要用""括起来。
如"""C:\Program Files\nn.exe"""的形式或者Chr(34)&"C:\Program Files\nn.exe"&Chr(34)的形式。
第二个参数是窗口的形式,0是在后台运行;1表示正常运行;2表示激活程序并且显示为最小化;3表示激活程序并且显示为最大化;一共有10个这样的参数如下表。
第三个参数是表示这个脚本是等待还是继续执行,如果设为了 true,脚本就会等待调用的程序退出后再向后执行。
其实,run 做为函数,前面还有一个接受返回值的变量,一般来说如果返回为0,表示成功执行,如果不为0,则这个返回值就是错误代码,可以通过这个代码找出相应的错误。
窗口风格 说明
0 隐藏一个窗口并激活另一个窗口。
1 激活并显示窗口。如果窗口处于最小化或最大化状态,则系统将其还原到原始大小和位置。第一次显示该窗口时,应用程序应指定此标志。
2 激活窗口并将其显示为最小化窗口。
3 激活窗口并将其显示为最大化窗口。
4 按最近的窗口大小和位置显示窗口。活动窗口保持活动状态。
5 激活窗口并按当前的大小和位置显示它。
6 最小化指定的窗口,并按照 Z 顺序激活下一个顶部窗口。
7 将窗口显示为最小化窗口。活动窗口保持活动状态。
8 将窗口显示为当前状态。活动窗口保持活动状态。
9 激活并显示窗口。如果窗口处于最小化或最大化状态,则系统将其还原到原始大小和位置。还原最小化窗口时,应用程序应指定此标志。
10 根据启动应用程序的程序状态来设置显示状态。
参数(的)详细信息可以参考 msdn:
http://msdn.microsoft.com/zh-cn/library/ateytk4a(en-us,VS.85).aspx
http://msdn.microsoft.com/zh-cn/library/d5fk67ky(en-us,VS.85).aspx
本文“WScript.Shell: 对象的run和exec使用详解”,来自:Nuclear'Atk 网络安全研究中心,本文地址:http://lcx.cc/?FoxNews=1168.html,转载请注明出处!
本文由VS软件圈(vssoft.net)发布,不代表VS软件圈立场,转载联系作者并注明出处:https://vssoft.net/vsazwt/VS2005anzhuangwenti/2020/0721/765.html