相关疑难解决方法(0)

如何使用Inno Setup在文件上设置"以管理员身份运行"

我正在使用Inno Setup创建一个安装程序.作为安装过程的一部分,我正在安装Tomcat.在Windows 7上,我遇到了这里描述的问题:

http://blog.paulbouwer.com/2010/10/23/the-case-of-the-annoying-tomcat-6-monitor/

我可以通过手动设置"以管理员身份运行"来修复它tomcat7w.exe(问题和根本原因对于tomcat7也是一样),但我不知道如何通过Inno Setup来实现.

我发现解释some_program.exe以管理员身份运行的线程,但这里的程序是在Tomcat服务启动时启动的(例如在机器启动时),因此我需要一种方法来使用Inno Setup将其标记为"以管理员身份运行"而不是实际上运行它.

inno-setup elevated-privileges

12
推荐指数
3
解决办法
3万
查看次数

有没有办法在Inno Setup中读取系统信息

有没有办法在安装过程中(仅在欢迎向导页面上)在Inno Setup中读取系统信息?

我的意思是:

  • 内存
  • 操作系统
  • 中央处理器
  • 用户
  • 知识产权
  • MAC地址。

知道这将是一件好事。我想把这些信息放在我要保存在计算机上的文本文档中。我似乎根本无法在网上找到任何资料,希望有人能对此有所帮助吗? 

inno-setup

5
推荐指数
1
解决办法
1052
查看次数

Inno Setup:保留现有的 32 位安装路径进行升级,使用 64 位路径进行新安装

我们的应用程序现在原生支持 64 位,因此默认情况下应安装在该C:\Program Files目录下。因此我们设置了这两个指令:

ArchitecturesInstallIn64BitMode=x64
DefaultDirName={pf}\{#ProductName}
Run Code Online (Sandbox Code Playgroud)

到目前为止,这没有任何问题!

问题是我们的产品确实有很多现有安装,当时它仍然只是 32 位,因此在下面正确安装C:\Program Files (x86)

通常,Inno Setup 会检测现有安装并使用相同的安装路径(如果找到)。但从 32 位模式更改为 64 位模式时,这似乎不起作用 - 可能是因为现在使用了不同的卸载注册表项。

如果已经安装了应用程序(以执行更新),是否还有一种方法可以告诉 Inno Setup 使用现有的 32 位安装路径,并且如果是新安装则仅使用 64 位安装路径?

inno-setup

5
推荐指数
1
解决办法
628
查看次数

从Inno Setup拆卸字符串[代码]

当我编译一个Inno Setup项目时,该[Code]部分也被编译了(作为Pascal可执行文件还是Pascal DLL)?

换句话说,如果有人打开Inno Setup项目的包装,他是否可以将本[Code]节视为原始源代码(该死的::))或作为已编译的可执行文件/ DLL(难于反汇编)?

我想在本[Code]节中插入一些字符串(密码和密钥),而且我不知道它们是否也可以在没有逆向工程知识的情况下很容易地恢复。

inno-setup pascalscript

5
推荐指数
1
解决办法
959
查看次数

Inno Setup 6 不能使用带字符串参数的 DLL 函数,但它在 Inno Setup 5 中有效

我们目前使用 Inno Setup 5.5.3 版来构建安装程序。我打算将此版本升级到 6.1.2。

我们使用 Inno Setup 来安装我们的产品。我们随安装程序一起提供许可证代码,用户在安装过程中在字段中输入许可证。此许可证使用自定义 DLL 进行验证,并且 DLL 为有效许可证返回非否定结果。此过程在 5.5.3 和 5.6.1 中运行良好,但在版本 6 中失败(使用 6.0.5 和 6.1.2 测试)。

不幸的是,没有生成指出确切问题的日志。

这个自定义 DLL 是 32 位的,是在 10 多年前使用 C++ 构建的。没有计划重做这部分。有没有办法使用相同的 DLL 并解决问题?谢谢你。

[Files]
Source: mydll.dll; Flags: dontcopy
Run Code Online (Sandbox Code Playgroud)
[Files]
Source: mydll.dll; Flags: dontcopy
Run Code Online (Sandbox Code Playgroud)
// This function calls the external mydll which parses licenseCode and
// returns an integer
function getFlags( secret, licenseCode : String) : Integer;
external 'getFlags@files:mydll.dll cdecl';
Run Code Online (Sandbox Code Playgroud)
function checkLicense(license : String) : Boolean;
var
  secret …
Run Code Online (Sandbox Code Playgroud)

dll inno-setup inno-setup-v6

5
推荐指数
1
解决办法
125
查看次数

使用Inno Setup创建硬链接

我有数千个自己的安装程序,需要一个关键的dll文件进行卸载步骤,这个dll文件大小约为2 mb然后避免不必要的磁盘空间(2mb*100安装程序)我想将文件存储一次{cf}然后为之创建一个硬链接需要该文件的下一个安装程序.

我可以在Inno Setup中创建硬链接而无需使用外部应用程序,例如mklink.exe用法?

这是我所拥有的一个简短示例,我的所有安装程序都遵循相同的"结构":

[Files]
; VCL Styles
Source: {tmp}\uninstall.vsf; DestDir: {app}; Flags: ignoreversion
Source: {tmp}\uninstall.dll; DestDir: {app}; Flags: ignoreversion uninsneveruninstall

; Temp files
Source: {tmp}\*; DestDir: {tmp}; Excludes: uninstall.dll, uninstall.vsf; Flags: recursesubdirs createallsubdirs ignoreversion

; Program
Source: {app}\*; DestDir: {app}; Flags: recursesubdirs createallsubdirs ignoreversion
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在将uninstall.dll移动到{app},但我想要做的是:如果不存在,请将uninstall.dll文件复制到{cf}\InnoSetup\uninstall.dllfilepath并创建一个硬链接{app}\uninstall.dll,如果已经存在则该文件然后只是制作硬链接,仅此而已,我不会仍然存储uninstall.dll文件{app}\uninstall.dll,只是我想要一个符号引用因为uninstall.dll文件永远不应该被卸载.

我怎么能这样做?

installer inno-setup hardlink pascalscript

4
推荐指数
1
解决办法
887
查看次数

在Inno Setup Pascal脚本中读取UTF-16文件

我有一个.inf从 Resource Hacker 导出的文件。该文件采用 UTF-16 LE 编码。

EXTRALARGELEGENDSII_INI TEXTFILE "Data.bin"

LARGEFONTSLEGENDSII_INI TEXTFILE "Data_2.bin"

NORMALLEGENDSII_INI TEXTFILE "Data_3.bin"

THEMES_INI TEXTFILE "Data_4.bin" 
Run Code Online (Sandbox Code Playgroud)

当我使用该LoadStringFromFile函数加载它时:

EXTRALARGELEGENDSII_INI TEXTFILE "Data.bin"

LARGEFONTSLEGENDSII_INI TEXTFILE "Data_2.bin"

NORMALLEGENDSII_INI TEXTFILE "Data_3.bin"

THEMES_INI TEXTFILE "Data_4.bin" 
Run Code Online (Sandbox Code Playgroud)

我在调试输出中得到这个:

E
Run Code Online (Sandbox Code Playgroud)

请告诉我如何解决这个问题。

提前致谢。

inno-setup utf-16 pascalscript

4
推荐指数
1
解决办法
2121
查看次数

Inno Setup - 页面名称和描述标签中文本下的透明度

我想在此处的文本下设置透明度:

在此输入图像描述

正如你所看到的,我有黑色背景,这是我不想要的。

问候。

inno-setup

3
推荐指数
1
解决办法
1554
查看次数

让 ISSkin 与最新的 Inno Setup Unicode 配合使用

我第一次尝试使用 Inno Setup 进行ISSkin。我想尝试一下黑色风格。所以我尝试了他们的示例:

[Setup]
AppName=ISSkin Example
AppVersion=1.0.0.2
DefaultDirName={pf}\ISSkin

[Files]
; Add the ISSkin DLL used for skinning Inno Setup installations.
Source: ISSkin.dll; DestDir: {app}; Flags: dontcopy

; Add the Visual Style resource contains resources used for skinning,
; you can also use Microsoft Visual Styles (*.msstyles) resources.
Source: Styles\Office2007.cjstyles; DestDir: {tmp}; Flags: dontcopy

[Icons]
Name: {group}\Uninstall =ISSkin; Filename: {app}\unins000.exe
Run Code Online (Sandbox Code Playgroud)
[Setup]
AppName=ISSkin Example
AppVersion=1.0.0.2
DefaultDirName={pf}\ISSkin

[Files]
; Add the ISSkin DLL used for skinning Inno Setup installations.
Source: …
Run Code Online (Sandbox Code Playgroud)

inno-setup pascalscript

3
推荐指数
1
解决办法
957
查看次数

为什么在 Inno Setup 6 中编译的安装程序比在 Inno Setup 5 中大 1 MB

我有一个 Inno Setup 脚本可以将我的应用程序变成一个 exe。

当我使用 Inno Setup 版本 6 编译代码时,输​​出文件大小为110MB(如 Windows 资源管理器大小列中所示)

但是当我在 Inno Setup 版本 5 中编译相同的脚本时,输出文件大小为109MB(小 1 MB)。

为什么会有大小差异?这是一个问题吗?

inno-setup inno-setup-v6

3
推荐指数
1
解决办法
1280
查看次数