gpt4 book ai didi

gac - 我可以使用 Pascal 脚本 (InnoSetup) 注册到 GAC 吗?

转载 作者:行者123 更新时间:2023-12-02 10:47:04 26 4
gpt4 key购买 nike

我正在使用 InnoSetup 来安装我构建的应用程序。我的客户请求在使用此 InnoSetup 插件安装时下载最新的 DLL:

http://www.sherlocksoftware.org/page.php?id=50

足够简单。我让它按照我想要的方式工作,但是没有 [Files] 部分(因为它下载它们而不是将它们构建到脚本中),我不确定如何将下载的 DLL 注册到广汽集团。在[Files]部分中,我使用了gacinstall标志。

既然我不再使用[文件],我想知道是否有办法通过 Pascal 脚本将 DLL 安装到 GAC?

这是我的设置脚本的相关部分:

[Code]
procedure InitializeWizard();
begin
itd_init;

itd_addfile('{#DownloadLocation}/mylibrary1.dll',expandconstant('{tmp}\mylibrary1.dll'));
itd_addfile('{#DownloadLocation}/mylibrary2.dll',expandconstant('{tmp}\mylibrary1.dll'));

itd_downloadafter(wpReady);
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep=ssInstall then begin //Lets install those files that were downloaded for us
filecopy(expandconstant('{tmp}\mylibrary1.dll'),expandconstant('{app}\mylibrary1.dll'),false);
filecopy(expandconstant('{tmp}\mylibrary2.dll'),expandconstant('{app}\mylibrary2.dll'),false);
end;
end;


[Run]
Filename: "{app}\{#MyAppExeName}"; Parameters: "-i"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, "&", "&&")}}"; Flags: runhidden
Filename: "{app}\{#MyAppSvcName}"; Parameters: "-i"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, "&", "&&")}}"; Flags: runhidden
Filename: "{app}\{#MyAppExeName}"; Description: "Launch the ItraceIT configuration tool"; Flags: postinstall nowait skipifsilent

[UninstallRun]
Filename: "{app}\{#MyAppSvcName}"; Parameters: "-u"; Flags: runhidden
Filename: "{app}\{#MyAppExeName}"; Parameters: "-u"; Flags: runhidden

感谢您的帮助。

最佳答案

[Files] 部分,您可以使用 external 标志来允许文件您已下载并通过标准 [Files] 部分运行,其中 gacinstall 标志可用。

[Files]
Source:{tmp}\mylibrary1.dll; DestDir:{app}; StrongAssemblyName: "MyAssemblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=abcdef123456, ProcessorArchitecture=MSIL" Flags: external; gacinstall;

那么您就不需要调用 CurStepChanged,因为 [Files] 部分会为您处理这些事情。

通过 Pascal 脚本,您可以使用 GAC API。

它没有正式记录,这里有一些文章很好地介绍了它。

  1. http://support.microsoft.com/default.aspx?scid=kb;en-us;317540
  2. http://www.codeproject.com/KB/system/gacapi.aspx
  3. http://www.codeproject.com/KB/dotnet/undocumentedfusion.aspx

您可以自己构建一些东西来调用 API,也可以分发 this application 并通过调用 ExecShellExec 来使用它。

这里是导入 InnoSetup 内部使用的 fusion DLL 的 Delphi Code ( CVS log )。

关于gac - 我可以使用 Pascal 脚本 (InnoSetup) 注册到 GAC 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6238480/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com