论坛首页
论坛首页 开发者论坛 PortableApps开发 请教一下关于软件制作的几个问题

请教一下关于软件制作的几个问题

讨论关于便携软件开发的技术与问题,包括PAL、NSIS、VMware ThinApp及其他。
piggie1986 头像
投名入寨
投名入寨

帖子: 3
最近在站长的影响下,开始学习制作portableapp,遇到一些问题,特来请教~~

首先,是一个软件多个启动器的问题,像PortableApps的LibreOffice或是这边的WPS一样,都是一个软件,有多个启动器。观其进程,David Pi您做的WPS是采用的不同的组件不同的启动器进程来监测主程序,而那边的LibreOffice是采用的不同组件共用一个启动器进程来检测主程序。
于是我想问一下,这两种分别是怎么达到的呢?谢谢~




第二个问题~
是关于custom.nsh的,我想达到以下目的:
打开启动器==>由启动器运行程序A和程序B==>当程序A退出==>启动器kill掉程序B并清洁,退出。
参考了您的教程,但是只知道如何终止不知道如何运行。

望David Pi不吝赐教,谢谢~~

David Pi 头像
建寨老工
建寨老工

帖子: 213

Hi!

首先,是一个软件多个启动器的问题,像PortableApps的LibreOffice或是这边的WPS一样,都是一个软件,有多个启动器。观其进程,David Pi您做的WPS是采用的不同的组件不同的启动器进程来监测主程序,而那边的LibreOffice是采用的不同组件共用一个启动器进程来检测主程序。
于是我想问一下,这两种分别是怎么达到的呢?谢谢~


PortableApps.com Launcher目前并不支持多个启动器,只有少数软件可通过特殊方式实现。
LibreOfficePortable的主程序是LibreOfficePortable.exe,是用PAL制作的,另外的几个启动器是最简单的NSIS语言(作用相当于快捷方式),通过不同的参数启动LibreOfficePortable.exe,来启动相应的Writer、PPT等程序。这种方法避免了混乱,不过只适用于LibreOffice这种本身就有一个“主程序”、并支持启动参数的软件。
WPS本身没有这样的“主程序”,只有三个组件。因此便携版是用纯粹的NSIS语言制作的。三个启动器共用一个头文件,唯一的区别是调用的exe文件不同。三份完整的WPS Portable代码编译到三个启动器中,运行其中任意一个即营造了WPS的完整运行环境。这种方式的缺点是同样的代码复制了三份,增大了启动器总体积,但似乎没有更好的办法。目前通过PAL无法制作WPS Portable这样的便携软件。

是关于custom.nsh的,我想达到以下目的:
打开启动器==>由启动器运行程序A和程序B==>当程序A退出==>启动器kill掉程序B并清洁,退出。
参考了您的教程,但是只知道如何终止不知道如何运行。


这个目的不需要通过custom code来实现,PAL自带了RunBefore和RunAfter的功能,可以指定在主程序运行前、后执行的程序:
首先:
代码: 全选
[Launch]
RunBefore1=程序B
ProgramExecutable=程序A

这样会先运行程序B,接着运行程序A并等待A结束。
然后在custom.nsh中结束掉程序B:
代码: 全选
${SegmentPostExecPrimary}
${TerminateProcess} '程序B的名字' $0
!macroend

就可以了。不知道你说的是不是这个意思呢?

piggie1986 头像
投名入寨
投名入寨

帖子: 3
非常感谢~受教了~~

新年快乐~~

:)


回到 PortableApps开发