如何发布应用程序

时间:2021-03-27 20:44:14

需求:

发布一个使用了MSCOMM32.OCX的mfc串口控制程序。OCX需要注册。

可以手动注册OCX,在命令行下输入以下语句,成功以后会有提示

 

注销OCX,输入以下语句,成功后有提示

  要发布应用程序,需要自动注册和注销OCX控件

解决方案

可以选择InstallShield,但是这个程序实在是大。。。后来选择了Inno Setupd,根据该软件提供了模板,设定主exe,添加exe依赖的dll等文件。尝试创建几次就轻松搞定。

在创建的iss源文件中:

 上面代码段中,第二句将MSCOMM32.OCX放到系统文件夹(system32)下面,后面Flags标志是注册。

 上面代码段中,卸载的时候,注销MSCOMM32.OCX,删除的时候移除系统文件夹中的OCX控件。

一个完整的安装程序的源文件(*.iss)  - add by 2011-10-10

; 脚本由 Inno Setup 脚本向导 生成!
; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档!

#define MyAppName "播放器客户端插件"
#define MyAppVersion "1.0.0.3"
#define MyAppPublisher "杭州盈货通科技有限公司"
#define MyAppURL "http://yingtongkj.cn.alibaba.com/"
#define MyAppExeName "MyProg.exe"

[Setup]
; 注: AppId的值为单独标识该应用程序。
; 不要为其他安装程序使用相同的AppId值。
; (生成新的GUID,点击 工具|在IDE中生成GUID。)
AppId={{35C8E93D-5FDA-45CF-9403-3C987A34C620}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
CreateAppDir=no
OutputDir=C:\Users\RenYafei\Desktop
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

[Languages]
Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"

[Files]
Source: "I:\9-2\Player.ocx"; DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: restartreplace regserver
Source: "I:\9-2\Ds40xxSDK.dll"; DestDir: "{sys}"; Flags: ignoreversion
Source: "I:\9-2\HCNetSDK.dll"; DestDir: "{sys}"; Flags: ignoreversion
Source: "I:\9-2\hikclient.dll"; DestDir: "{sys}"; Flags: ignoreversion
Source: "I:\9-2\hpr.dll"; DestDir: "{sys}"; Flags: ignoreversion
Source: "I:\9-2\mfc90.dll"; DestDir: "{sys}"; Flags: ignoreversion
Source: "I:\9-2\msvcp90.dll"; DestDir: "{sys}"; Flags: ignoreversion
Source: "I:\9-2\msvcr90.dll"; DestDir: "{sys}"; Flags: ignoreversion
Source: "I:\9-2\PlayCtrl.dll"; DestDir: "{sys}"; Flags: ignoreversion

[UninistallRun]
Filename: "regsvr32"; Parameters:"/u Player.ocx"
[UninstallDelete]
Type: files; Name:"{sys}//Player.ocx"
Type: files; Name:"{sys}//Ds40xxSDK.dll"
Type: files; Name:"{sys}//HCNetSDK.dll"
Type: files; Name:"{sys}//hikclient.dll"
Type: files; Name:"{sys}//hpr.dll"
Type: files; Name:"{sys}//mfc90.dll"
Type: files; Name:"{sys}//msvcp90.dll"
Type: files; Name:"{sys}//msvcr90.dll"
Type: files; Name:"{sys}//PlayCtrl.dll"

; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion”