【发布时间】:2013-04-11 17:56:29
【问题描述】:
我正在尝试为我构建的应用程序创建安装程序。尝试将程序复制到用户桌面时遇到问题:复制程序时出现错误:
系统错误。代码:5. 访问被拒绝。
我尝试以管理员身份运行,但似乎没有任何效果。当我将文件复制到 Program Files 时,它工作正常,但是当我尝试复制到用户的桌面时,我收到错误消息。我的目标平台是 Windows 7 和 Windows 8。
这是我的一些代码:
function GetCurrentUserName : String;
const
cnMaxUserNameLen = 254;
var
dwUserNameLen : DWORD;
begin
dwUserNameLen := cnMaxUserNameLen-1;
SetLength(sUserName, cnMaxUserNameLen);
GetUserName(PChar(sUserName), dwUserNameLen);
SetLength(sUserName, dwUserNameLen);
Result := sUserName;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
Source, Source2, Dest, Dest2: String;
begin
Source := 'rusmar.bin';
Dest := 'C:/Program Files/RusMarEstimatingModel.exe';
if not CopyFile(PChar(Source), PChar(Dest), False)
then RaiseLastOSError;
GetCurrentUserName;
Source := 'rusmar.bin';
Dest := 'C:/Users/' + sUserName + '/Desktop/RusMarEstimatingModel.exe';
if not CopyFile(PChar(Source), PChar(Dest), False)
then RaiseLastOSError;
label2.Show;
timer1.Enabled := True;
end;
【问题讨论】:
-
你应该学会格式化你的帖子。
-
对不起,我也是这个网站的菜鸟
-
你能帮我解决我的问题吗
-
您确定您的应用可以访问 source 文件,而不是 destination 文件吗?为什么要使用相对路径来访问源文件?始终使用绝对路径。
-
此代码远非“安装程序”。您应该查看免费的 InnoSetup 之类的东西,然后构建一个实际的安装程序。你有硬编码的文件路径(至少其中一个是完全错误的,顺便说一句);有 API 调用会返回正确的位置。 InnoSetup 将允许您构建一个实际的
Setup.exe,它将文件放置在适当的位置,正确创建快捷方式,让您的生活更加简单。
标签: windows delphi delphi-7 uac