首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从Inno Setup向GAC添加程序集

从Inno Setup向GAC(全局程序集缓存)添加程序集的过程包括以下几个步骤:

  1. 首先,确保已经安装了.NET Framework,因为GAC是.NET Framework的一部分。
  2. 使用Inno Setup编译器创建安装程序。在安装程序中,将程序集文件添加到Files部分,并将其安装到应用程序的安装目录中。
  3. 在安装程序的Code部分中,使用Pascal Script编写代码来将程序集添加到GAC中。可以使用以下代码示例:
代码语言:txt
复制
[Code]
const
  GACUTIL = 'C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\gacutil.exe';

function AddAssemblyToGAC(const AssemblyFile: String): Boolean;
var
  ResultCode: Integer;
begin
  if not FileExists(GACUTIL) then
  begin
    Log('Error: gacutil.exe not found');
    Result := False;
  end
    else
  begin
    Exec(GACUTIL, '/i ' + AssemblyFile, '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
    Result := ResultCode = 0;
  end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssPostInstall then
  begin
    if not AddAssemblyToGAC(ExpandConstant('{app}\MyAssembly.dll')) then
      MsgBox('Error: Failed to add assembly to GAC', mbError, MB_OK);
  end;
end;

在这个示例中,我们定义了一个名为AddAssemblyToGAC的函数,它将程序集添加到GAC中。函数首先检查gacutil.exe是否存在,然后使用它将程序集添加到GAC中。如果添加成功,函数将返回True,否则返回False。

在CurStepChanged函数中,我们调用AddAssemblyToGAC函数将程序集添加到GAC中。在这个示例中,我们假设程序集文件名为MyAssembly.dll,并且已经在Files部分中安装到应用程序的安装目录中。

  1. 编译安装程序并运行它。安装程序将会将程序集添加到GAC中。

注意:在使用Inno Setup向GAC添加程序集时,需要确保已经具有管理员权限,因为添加程序集需要管理员权限。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

解决T4模板的程序集引用的五种方案

目录 一、添加程序集引用解决不了问题 二、将引用程序集安装到GAC 三、利用VS的PublicAssemblies目录 四、指定程序集的具体路径...五、采用环境变量 六、使用VS宏 一、添加程序集引用解决不了问题 如果你的T4模板需要调用一个自定义的类型,并且该类型定义在某个非系统程序集中,你就需要通过T4...#> public class HelloWorld {} 但是这种方式对于VS 2010则行不通,因为T4引擎在解析和编译模板的时候并不会从项目引用列表中去定位目标程序集...二、将引用程序集安装到GAC 其实我们有很多方式来解决这个问题,你首先想到的肯定是将引用的程序集安装到GAC中。没错,这是一种解决方案,如果被引用的程序集具有强签名的话。...如果被引用的程序集被没有被签名,GAC的方式则不能使用,在这种情况下你需要指定程序集文件所在的位置,最直接的当然就是指定程序集文件的绝对路径。

83870

怎样反射程序集?

第七部分:反射程序集 1、什么是程序集? 1、程序集是.net中的概念。 2、.net中的dll与exe文件都是程序集。(exe与dll的区别?)...4、程序集包含:类型元数据(描述在代码中定义的每一类型和成员,二进制形式)、程序集元数据(程序集清单、版本号、名称等)、IL代码(这些都被装在exe或dll中)、资源文件。...2)、程序集可以封装一些代码,只提供必要的访问接口。 6、如何添加程序集的引用?...1)、添加路径、项目引用、GAC(全局程序集缓存) 不能循环添加引用 在c#中添加其他语言编写的dll文件的引用。...动态连接库(=dynamic link library) GAC的详细配置参考:http://support.microsoft.com/kb/815808/zh-cn GAC目录C:\WINDOWS

53020
  • C# Windows桌面应用打包指南

    本文将详细介绍 C# 应用打包的各种方法,包括 ClickOnce、MSI 安装包、Visual Studio Installer Projects、WiX Toolset 和一些第三方工具(如 Inno...Setup 和 NSIS)。...使用 WiX Toolset 打包WiX Toolset 是一个开源的工具集,允许开发者通过 XML 定义复杂的安装包。WiX 支持高级功能,如安装多个组件、创建注册表项、服务安装等。...Inno Setup 和 NSIS第三方工具:Inno Setup 和 NSISInno Setup 和 NSIS 是两款常见的第三方打包工具,它们提供了更灵活的安装包配置选项。...Inno Setup 打包步骤:下载并安装 Inno Setup。使用其内置的脚本编辑器,编写安装脚本,定义要打包的文件、安装路径等。编译脚本,生成安装包。NSIS 打包步骤:下载并安装 NSIS。

    34632

    关于强命名程序集

    GAC    GAC 包含很多子目录,这些子目录是用一种算法来产生的,我们最好不要手动将程序集拷贝到 GAC 中,相反,我们应使用工具来完成这样的工作。...首先, GAC 使得很多程序可以共享程序集,这从整体上减少了使用的物理内存;其次,我们很容易将一个新版的程序集部署到  GAC 中,并通过一种发布者策略(差不多就是一种重定向方法,比如将原来引用版本为...但是, GAC 的安全策略通常只允许管理员更改,同时,向 GAC 中安装程序集也破坏了 .NET 框架的简单拷贝部署的许诺。...除了向 GAC 或者以私有部署方式部署强命名程序集之外,我们还可以将强命名程序集部署在仅为一小部分程序知道的某个任意目录下。...强命名策略: 生成公钥与私钥对,并 对私钥做严格的保护 生成:sn -k keyfile.snk 公钥与私钥对 抽取公钥:sn -p keyfile.snk public.snk 从keyfile中抽取公钥保存到

    64910

    常用软件打包类型及静默安装参数(nsis|msi|InstallShield|Inno)

    可以使用命令行选项运行wise installation.exe,以自动执行常用任务 更多参数: /c file.wse 从WISE脚本创建可执行文件 /r 在 SetupCapture 窗口中打开WISE...六、Inno Setup 使用 Inno 技术制成的程序安装包可以使用 /SILENT 和 /VERYSILENT 参数进行静默安装。...我们可以通过使用一个参数跳过这个对话框: setup.exe /silent /suppressmsgboxes 有些利用 Inno 技术做作的安装包会在程序安装完毕后自动运行所安装的程序,例如:ISOBuster...以下是一个可以用于批处理文件安装 Inno 打包的软件的命令的示例: ECHO....Inno Setup 制作的安装文件,请使用下面的明显,安装完直接重启: setup.exe /sp- /silent /norestart 如何判断哪个安装程序是用 Inno 技术打包的?

    16K23

    vs2012打包和部署程序成可安装安装包文件(InstallShield

    二、InstallShield程序打包图解 VS2012中打包工具被看做程序集,在使用时和程序集一样被创建到程序解决方案下。需要我们做的是添加项目即可。...4、添加程序文件​​ 在下图中的第四步中添加程序文件时会有主输出、源文件等多个选项框,其实它的生成机制和.NET程序的编译机制是相同的。...5、添加程序的资源文件​​ 程序源文件是程序运行的资源文件,也包含了程序的源码文件。如果不需要打包源文件的话,这步可以省略。 ​​...好了设置完成后,接下来就是生成解决方案了或者是只生成单个程序集,这时候安装文件就只有一个setup.exe了,如下图。...生成解决方案后会在安装程序集下面生成一个名为Setup的文件夹,安装文件就保存在下面的目录中。

    6000

    .NET 5的重大改变:消失的历史技术

    全局程序集缓存 全局程序集缓存(GAC)背后的理论是,所有.NET 库都可以存储在单个集中的位置。在这种方式下,它与 COM 库类似。但与 COM 不同的是,它可以存储每个库的多个版本。...因此,.NET Core 中没有 GAC 的概念。 尽管如此,GAC API 在.NET Core 中仍然存在。...它们所做的事情不多,例如,指示程序集是否在 GAC 中的属性被硬编码为返回 false。 为了进一步明确意图,所有的 GAC API 现在都被标记为已过时,微软正考虑在未来的版本中删除它们。...IIS 之类的主机可以配置为运行具有不同“信任”级别的应用程序,从理论上讲,是将它们放入一个沙箱中。 CAS 的另一个用途是用于浏览器托管的应用程序。...应用程序的信任级别部分取决于它是从哪里加载的,内部站点会获得更高的权限。 但是和许多早期的.NET 技术一样,要正确地实现 CAS 很困难。

    44420

    Assembly.Load()方法,Assembly.LoadFrom()方法,Assembly.LoadFile()方法的区别!

    1,Assembly.Load()          这个方法通过程序集的长名称(包括程序集名,版本信息,语言文化,公钥标记)来加载程序集的,会加载此程序集引用的其他程序集,一般情况下都应该优先使用...: ⑴如果程序集有强名称,在首先在全局程序集缓(GAC)中查找程序集。         ...⑵如果程序集的强名称没有正确指定或GAC中找不到,那么通过配置文件中的元素指定的URL来查找 ⑶如果没有指定强名称或是在GAC中找不到,CLR会探测特定的文件夹:      假设你的应用程序目录是...2,Assembly.LoadFrom()           这个方法从指定的路径来加载程序集,实际上这个方法被调用的时候,CLR会打开这个文件,获取其中的程序集版本,语言文化,公钥标记等信息,把他们传递给...3,Assembly.LoadFile()           这个方法是从指定的文件来加载程序集,和上面方法的不同之处是这个方法不会加载此程序集引用的其他程序集!

    2.6K10

    第一章 安装

    安装 X# X#的当前 2.x 版本必须从 X# 官方网站下载和安装。此安装版本仅适用于Windows。下载内容为一个 zip 文件,它包含一个 Windows 安装程序文件。...重要提示:这两个地址只对那些喜欢阅读、分析甚至贡献X# 编译器代码,或者想直接向开发人员报告错误的开发人员有意义。对于一般问题、建议或任何其他类型的评论或讨论,X#论坛是一个更好的地方。...Core 编译器(它不再是公共版本的一部分) l是否安装Visual Studio 集成,因为您可能仅需要 X# 编译器 l是否需要安装示例 l是否注册PRG 扩展 l是否需要本地图片 lX# 程序集是否应成为全局程序集缓存...提示:有一个日志文件(ActivityLog.Setup.xml)包含了安装 Visual Studio 扩展时的所有操作。...不选择 GAC 选项意味着XSharp 程序集仅被复制到安装目录中。 安装多个版本的 X# 安装程序的默认行为是先卸载之前的版本。

    7810

    起底勒索软件Trigona:扮猪吃老虎,闷声发大财

    依据从在线病毒分析平台VirusTotal获得的Trigona勒索软件的二进制文件、赎金信息,以及Unit 42安全事件响应的结果来看,安全研究人员确认Trigona勒索软件在2022年12月开始活跃,...从turnoff.bat停止各种各样的服务和任务来看,该工具的另一个目的是确保更广泛的系统加密。...DC2.exe DC2.exe是一个用于从Windows操作系统提取密码和身份验证凭据等敏感信息的工具,可以用来包括Mimikatz密码。...DC6.exe DC6.exe是公开可用工具Advanced Port Scanner的安装程序,常被打包在Inno Setup安装程序包中,而Inno Setup是Windows程序的免费安装软件。...在Inno Setup中藏着Advanced Port Scanner为代码增加了额外的混淆层,其目的是为了逃避静态签名检测。

    1.4K50

    蒋鸿翔:网易数据基础平台建设

    今天分享的内容主要是从数据库内核到大数据平台底层技术开发,分享网易数据科学中心多年的大数据建设经验。...300GB原始数据,分别导入到Inno DB(未压缩)和Inno Rocks后的存储容量对比,Inno DB为315GB左右,Inno Rocks为50 ~ 60GB,存储容量是Inno DB的20%到...(1)大量数据写入场景,比如日志、订单等;(2)需要高压缩以便存储更多的数据,Inno DB --> Inno Rocks;(3)对写入延迟波动比较敏感,HBase --> Inno Rocks;(4)...Bitmap应用的限制就是数据离散性不能太好,dinstct count的值不能太多,向数据库中主键不适合做Bitmap,像省份等值比较少的适合做Bitmap。...如果数据从数据库导入大数据平台离线分析其实时性比较慢,主要局限小文件以及导入批量大小问题,利用Kudu就不用考虑,可以直接通过Kudu实现数据变更导入大数据支持实时联查。

    70540
    领券