我正在使用数字证书签署我的安装程序.使用Inno Script Studio时,我已正确定义了我的签名工具,其中包含MS签名工具,证书密码等的路径.我只是简单地引用它
SignTool=signtool
Run Code Online (Sandbox Code Playgroud)
这很好用.
但是当我尝试通过命令行编译我的脚本时使用:
C:\Program Files (x86)\Inno Setup 5>iscc "C:\Users\username\Documents\MyInstaller.iss"
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
[Setup]部分指令"SignTool"的值无效.
当我阅读文档时,它指出:
将自动指定使用IDE配置的任何Sign Tools
所以我的理解是我不应该使用/S
参数?从命令行构建时签署设置文件的正确方法是什么?
我希望我的安装程序将一些文件复制到Windows ProgramData
目录中,我看到大多数Windows目录都有Inno Setup文档中已经定义的预定义常量,但我看不到一个ProgramData
.
因此我计划使用类似的东西:
{sd}\ProgramData\MyCompany\MyApp
Run Code Online (Sandbox Code Playgroud)
这是使用Inno Setup部署到此目录的正确/最佳方式吗?我觉得这个ProgramData
目录没有常数,这似乎很奇怪.
我正在使用 WebClient 尝试从本地连接到我的 PC 的硬件中获取字符串响应。我的 PC 有一个连接到 LAN 的网络适配器和一个仅连接到我的硬件的第二个适配器。
如果我使用带有 URL 的 IE:http://169.254.103.127/set.cmd?user=admin+pass=12345678+cmd=getpower我会得到一个字符串作为响应。我正在尝试使用以下代码片段来实现相同的目的:
using (WebClient client = new WebClient())
{
client.Proxy = WebRequest.DefaultWebProxy;
client.Credentials = CredentialCache.DefaultCredentials;
client.Proxy.Credentials = CredentialCache.DefaultCredentials;
client.Headers["User-Agent"] =
"Mozilla/4.0 (Compatible; Windows NT 5.1; MSIE 6.0) " +
"(compatible; MSIE 6.0; Windows NT 5.1; " +
".NET CLR 1.1.4322; .NET CLR 2.0.50727)";
String test = client.DownloadString(@"http://169.254.103.127/set.cmd?user=admin+pass=12345678+cmd=getpower");
}
Run Code Online (Sandbox Code Playgroud)
如果我禁用连接到 LAN 的网络适配器,则此代码段有效,否则会超时。
有人可以解释为什么会发生这种情况以及我需要做什么才能将请求路由到正确的网络吗?
我希望使用命令行构建Inno Setup脚本,并且希望将产品版本号作为参数传递。我正在尝试像这样实现它:
[setup]
VersionInfoVersion={param:version|0.0.0.0}
Run Code Online (Sandbox Code Playgroud)
但是,编译器会通知我这对于该指令无效。我已阅读本关于如何在自定义参数传递的命令行后,并假设我应该能够在像经过:
compil32 /cc "c:\isetup\samples\my script.iss" /version=1.0.0.0
Run Code Online (Sandbox Code Playgroud)
我也尝试了这篇文章中的建议,并尝试执行以下操作:
#define PathToMyBinary "C:\bin\x64\Release"
#define ApplicationVersion GetFileVersion('#PathToMyBinary\MyBinary.dll')
VersionInfoVersion={#ApplicationVersion}
Run Code Online (Sandbox Code Playgroud)
但是它似乎没有返回任何东西。这两种方法对我来说似乎都是有效的,所以我希望有人可以解释我要去哪里。
我希望能够在安装开始之前向最终用户显示发行说明(例如,如果有任何代码更改,他们在升级到新版本之前应该注意)。
我已阅读有关 Pascal 代码BeforeInstall 和 AfterInstallParameters 的文档 ,但我的问题是如何引用我的发行说明文件,因为它打包在安装可执行文件中?我意识到最简单的答案是简单地将安装程序与旁边的文本文件副本打包在一起,以便它可以以这种方式引用它,但是如果用户仅复制可执行文件,这可能会导致引用错误。
实现这一点的最佳方法是什么?