NSIS打包的程序中加入数据库服务

NSIS打包的程序中加入数据库服务,第1张

你可以检测用户是否已经安装 Oracle 和 .NET,如果没有安装,则安装程序就不启动。

集成 Oracle 和 .NET 是不现实的,除非你的软件本身也非常巨大,或者提供了安装光盘,将 Oracle 和 .NET 都放在里面。Oracle 可能需要手动安装。我没用过,我猜测是使用 Install shield 打包。如果要集成,你需要知道静默安装参数。时间太久用户可能不愿意等待,所以还是建议启动让用户手动安装。可使用 NSIS 提供的插件 Service 检测 Oracle 相关服务确实 Oracle 是否安装。服务名称你自己去搞定:

<a href=" http://nsis.sourceforge.net/Services_plug-in" target="_blank">http://nsis.sourceforge.net/Services_plug-in</a>

services::IsServiceInstalled 'MyServiceName'

Pop $0

$0 now contains either 'Yes', 'No' or an error description

官方关于检测和安装 .NET Frameword 的参考代码:

<a href=" http://nsis.sourceforge.net/Detect_and_download_the_.NET_framework." target="_blank">http://nsis.sourceforge.net/Detect_and_download_the_.NET_framework.</a>

<a href=" http://nsis.sourceforge.net/Simple_Way_To_Install_.NET_Framework" target="_blank">http://nsis.sourceforge.net/Simple_Way_To_Install_.NET_Framework</a>

<a href=" http://nsis.sourceforge.net/Installing_the_Microsoft_.NET_Framework" target="_blank">http://nsis.sourceforge.net/Installing_the_Microsoft_.NET_Framework</a>

<a href=" http://nsis.sourceforge.net/How_to_Automatically_download_and_install_a_particular_version_of_.NET_if_it_is_not_already_installed" target="_blank">http://nsis.sourceforge.net/How_to_Automatically_download_and_install_a_particular_version_of_.NET_if_it_is_not_already_installed</a>

$0~$9、$R0~$R9 是 NSIS 二十个内置变量

1. Push X

将 X(变量或字符串都行)放入 NSIS 堆栈顶部。Pop 变量,将堆栈顶部值d出到 "变量"。如:

Push good

StrCpy $R0 bad

Pop $R0

MessageBox MB_OK $R0 #此时$R0为good

2. 读取注册表:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5

键下的 Install 项的值,将结果保存在 $0 变量中。

3. StrCmp 值1 值2 相等时跳转标记 [不相等时跳转标记]。

相等时跳转标记/不相等时跳转标记可以是标记,也可以是+N或-N表示相对跳转。

StrCmp $0 1 KnowNetFrameworkVersion +1

$0为1,跳转到"KnowNetFrameworkVersion:"处,否则跳转+1即下一行。

StrCpy $1 "1.0.3705.0"

将字符串"1.0.3705.0"复制到$1变量。

(1) StrCmp $R0 0 good

#"不相等跳转标记"是可选的,你可以留空不写或写0或+1都一样表示到下一句。

...

...

good:

(2) StrCmp $R0 0 +2 +4

#如果该行是有效的语句则被跳过。注意:注释不算语句,此处仅作示范,下同。

#$R0为0则跳到此行

Goto +2 #跳过下一行到下下一行

#$R0不为0则跳到此行

也可以标记与相对跳转混合使用:

(3) StrCmp $R0 0 0 end

...

#N行语句,不确定行数或行数太多。

...

end:

4."$TEMP"是临时文件夹。如果当前为Administrator用户,其典型路径如下:

XP/2000:C:\Documents and Settings\Administrator\Local Settings\Temp

Vista/7:C:\Users\Administrator\AppData\Local\Temp

常见的路径变量有:

桌面:$DESKTOP

Windows目录:$WINDIR

系统目录:$SYSDIR

开始菜单:$STARTMENU

开始菜单中的程序:$SMPROGRAMS

我的文档:$DOCUMENTS

…………

以上命令说明都可以在NSIS中文帮助中找到。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12146312.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存