先进工具就是生产力。
最近发现又被XE4坑了一把,工程名称必须为英文,如果是中文,输出对应的app也是中文,在10.10以下的版本中都能正常运行,但是到了10.10就无法启动了。【XE7出来的就都可以,无奈无法升级到新版本】
纠结了很久,如何找到一个两全其美的方法呢?
====================================最新更新========================================
注:目前已知道中文问题,是奇数个中文汉字名称的App在某些系统中获取其路径会出现乱码,这又是XE4的Bug,XE4的后续版本中获取路径函数是这样子的:
<pre name="code" class="plain">
function ParamStr(Index: Integer): string;
{$IFDEF MSWINDOWS}
var
P: PChar;
Buffer: array[0..260] of Char;
begin
Result := '';
if Index = 0 then
SetString(Result, Buffer, GetModuleFileName(0, Buffer, Length(Buffer)))
else
begin
P := GetCommandLine;
while True do
begin
P := GetParamStr(P, Result);
if (Index = 0) or (Result = '') then Break;
Dec(Index);
end;
end;
{$ENDIF MSWINDOWS}
{$IF defined(LINUX) or defined(MACOS) or defined(ANDROID)}
begin
if Index < ArgCount then
<span style="color:#ff0000;"> Result := UTF8ToString(PAnsiCharArray(ArgValues^)[Index])</span>
else
Result := '';
{$ENDIF LINUX or MACOS or ANDROID}
end;
XE4中是这样子的:
function ParamStr(Index: Integer): string;
{$IFDEF MSWINDOWS}
var
P: PChar;
Buffer: array[0..260] of Char;
begin
Result := '';
if Index = 0 then
SetString(Result, Buffer, GetModuleFileName(0, Buffer, Length(Buffer)))
else
begin
P := GetCommandLine;
while True do
begin
P := GetParamStr(P, Result);
if (Index = 0) or (Result = '') then Break;
Dec(Index);
end;
end;
{$ENDIF MSWINDOWS}
{$IF defined(LINUX) or defined(MACOS)}
begin
if Index < ArgCount then
<span style="color:#ff0000;"> Result := string(PAnsiCharArray(ArgValues^)[Index])</span>
else
Result := '';
{$ENDIF LINUX or MACOS}
end;
修改System.pas单元无果后,就直接弃用了ParamStr这个函数,直接用UTF8ToString(System.ArgValues^))替代
============================================================================
后来发现也Ios app的原理是一样的,XE中可以用 CFBundleDisplayName 去设定对应的显示名称,但是XE做的很不完备,完全没考虑Mac App开发人员的感受,必须要手动去完成类似的配置,IDE中配置仅仅是针对手机的。
- 在工程目录下创建二个文件夹(zh_CN.lproj)文件(InfoPlist.strings)及内容:
-
- zh_CN.lproj
- InfoPlist.strings
-
CFBundleName = "中文测试"; CFBundleDisplayName = "中文测试";
- zh_CN.lproj
2、Deployment 设定发布目录到Resources中的对应目录中
参考:http://www.cnblogs.com/onechen/p/4431743.html