论坛首页
论坛首页 开发者论坛 PortableApps开发 首次制作仓管王过程中遇到的困难,求指点

首次制作仓管王过程中遇到的困难,求指点

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

帖子: 5
Launcher
代码: 全选
[Launch]
RunBefore=CGW\cgw_ser.exe
ProgramExecutable=CGW\cgw_acs.exe
CloseEXE=cgw_ser.exe
WaitForEXE1=cgw_ser.exe
DirectoryMoveOK=yes

首先运行服务器,再进仓管王,等服务器结束退出,注册表备份清理之类的等我打包成功之后慢慢对比添加。

custom.nsh
代码: 全选
${SegmentFile}

${SegmentPreExecPrimary}
   CopyFiles /Silent "$AppDirectory\DefaultData\midas.dll" $Windir\system32\midas.dll
!macroend

${SegmentPostExecPrimary}
   Delete $WINDIR\system32\midas.dll
!macroend

仓管王要求把Midas.dll动态库复制到System32目录下才能工作。
服务器结束后删除System32目录下的这个动态库。

一、问题来了,上面的东西都是在本论坛找的,不是太明白,出错信息为:
Loading language strings... (macro:!echo:3)
Initialising variables and macros... (macro:!echo:3)
Loading segments... (macro:!echo:3)
Invalid command: ${SegmentPostExecPrimary}
!include: error in script: "E:\仓管王\App\AppInfo\Launcher\custom.nsh" on line 7
!include: error in script: "Segments.nsh" on line 122
Error in script "E:\Portable Launcher\Other\Source\PortableApps.comLauncher.nsi" on line 140 -- aborting creation process

二、我的想法:判断是否为首次运行,是,把缺省目录中的文件分别复制到所需要的目录(Midas.dll到System32下,数据库目录Data、配置文件等复制到仓管王目录下,全部结束后移回用户目录DATA,以后运行从DATA目录移,这样做是网站提倡的。求代码和说明,让更多的人加入PortableAppsC 谢谢达人。

paulhybryant 头像
分舵香主
分舵香主

帖子: 56
PortableApps.com所提供的Hook里面并没有${SegmentPostExecPrimary},只有PostPrimary
这是第一个出错的原因。可以参考文档。里面列出了所有可用的hook。
http://portableapps.com/manuals/Portabl ... ustom-code

判断是否为首次运行可以用SegmentPreExecPrimary这个hook。

paulhybryant 头像
分舵香主
分舵香主

帖子: 56
还有一点,为了兼容,应该用$SYSDIR指定system32文件夹。
移动data目录里的内容可以使用Custom.nsh或者PAL的launch.ini.
关于Launcher.ini的使用Beta试验场里面的有一些例子。

12365166 投名入寨
投名入寨

帖子: 5
感谢回复,打包成功。
${SegmentPostExecPrimary}改为${SegmentUnload}之后成功。
存在的问题:
主程序启动之前需要运行两个程序,Beta试验场找过来完,没有代码。上面的代码打包之后,没启动。

paulhybryant 头像
分舵香主
分舵香主

帖子: 56
${SegmentUnload}一般用来清理NSIS插件释放的文件,用${SegmentPostPrimary}或许更合适一些。
Beta试验场里面的Portable软件,下载安装之后在App\AppInfo\Laucher里面会有Launcher.ini,可以参考。
RunBefore好像现在的PAL里面没有了,在文档里面没有看到。如果PAL不支持需要用CustomCode来启动,
在${SegmentPrePrimary}里面启动应该可以。


回到 PortableApps开发

cron