论坛首页
论坛首页 开发者论坛 PortableApps开发 32位和64位系统,路径不同该怎么处理?

32位和64位系统,路径不同该怎么处理?

讨论关于便携软件开发的技术与问题,包括PAL、NSIS、VMware ThinApp及其他。
wzk999 两把菜刀
两把菜刀

帖子: 20
QQ管家(外壳版,用来泡分的),必须要先把几个dll文件拷贝到程序目录下,才能运行。

32位的程序目录是Program Files,64位的是Program Files (x86)。用Appdata=%ProgramFiles%\Common Files\Tencent,只在32位下管用,对64位则没辙了。

该怎么处理?请大侠指教。

jooseng 革命同志
革命同志

帖子: 3645
在Launcher.ini里你只能用这些环境变量。要用Windows 或 NSIS 环境变量需要在custom code里使用或设置只给这个Launcher 用的环境变量。

NSIS常数 $PROGRAMFILES 和$PROGRAMFILES32在32位系统指向C:\Program Files,在64位系统指向C:\Program Files (x86)。
类似的$COMMONFILES 和 $COMMONFILES32在32位系统指向C:\Program Files\Common Files,在64位系统指向C:\Program Files (x86)\Common Files。

你的情况可以使用$COMMONFILES,不过需要在custom code里用。要在Launcher 里用需要先将它设成环境变量。如果你不熟悉,可以用我这个,将它和Launcher.ini放在一起。

Custom.nsh
========
${SegmentFile}
${SegmentInit}
System::Call `Kernel32::SetEnvironmentVariable(t, t) i("COMMONFILES", "$COMMONFILES").r0`
!macroend

========================================

在Launcher.ini里用%COMMONFILES% 例如:
Appdata=%COMMONFILES%\Tencent

wzk999 两把菜刀
两把菜刀

帖子: 20
jooseng 写道:
在Launcher.ini里你只能用这些环境变量。要用Windows 或 NSIS 环境变量需要在custom code里使用或设置只给这个Launcher 用的环境变量。

NSIS常数 $PROGRAMFILES 和$PROGRAMFILES32在32位系统指向C:\Program Files,在64位系统指向C:\Program Files (x86)。
类似的$COMMONFILES 和 $COMMONFILES32在32位系统指向C:\Program Files\Common Files,在64位系统指向C:\Program Files (x86)\Common Files。

你的情况可以使用$COMMONFILES,不过需要在custom code里用。要在Launcher 里用需要先将它设成环境变量。如果你不熟悉,可以用我这个,将它和Launcher.ini放在一起。

Custom.nsh
========
${SegmentFile}
${SegmentInit}
System::Call `Kernel32::SetEnvironmentVariable(t, t) i("COMMONFILES", "$COMMONFILES").r0`
!macroend

========================================

在Launcher.ini里用%COMMONFILES% 例如:
Appdata=%COMMONFILES%\Tencent


搞掂!感谢大侠。
顺便问一下,大侠的网易博客不能访问了?

jooseng 革命同志
革命同志

帖子: 3645
wzk999 写道:

搞掂!感谢大侠。
顺便问一下,大侠的网易博客不能访问了?

因为用了敏感词被封了。但我确实不知道那一些是敏感词。
viewtopic.php?f=4&t=2093


回到 PortableApps开发