Wil*_*ill 5 java windows ant javafx code-signing
因此,经过很多痛苦,我即将完成我的项目,现在我需要知道如何对可执行文件进行编码签名.不,不是.jar,我知道怎么做.我需要的是能够对为我们的用户启动.jar的.exe文件进行代码签名,这样他们就不会看到"您是否希望允许来自未知发布者的以下程序"警告消息.
我知道如何使用INNO脚本自定义流程,我可以使用它来对安装程序进行代码签名,我知道如何包含将用于可执行文件和快捷方式的不同图标文件,我知道如何编码签名通过ANT脚本的jar,但是,这完全没有我.
那么,有没有人知道如何对捆绑自包含JavaFX应用程序时启动jar的.exe进行代码签名?
Wil*_*ill 10
好的,我找到了.这是非常痛苦的,因为(如果我在正确的上下文中使用这个术语)"竞争条件"在这里,如果代码签名在你再次开始运行之前没有完成,它会失败,因为它不能使用.exe执行任何操作,因为它正由另一个进程使用.
只要你的IDE在Admin中运行(无论如何都是Windows),也不需要提升你的脚本.
不管怎样,我的问题是该文件被设置为只读.非常讨厌,但幸运的是VBScript允许您更改文件属性,因此在尝试对其进行代码签名之前只需执行此操作:
<?xml version = "1.0" ?>
<package>
<job id="CodeSign">
<script language = "VBScript">
<![CDATA[
'Set File as Normal. . .
Dim objFSO, objFile
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("<Relative Path>\<File.exe>")
objFile.Attributes = 0
Dim Shell
Set Shell = WScript.CreateObject("WScript.Shell")
Shell.Run "<Code Sign> ""<Relative Path>\<File.exe>""", 1, True
Set Shell = Nothing
Set objFSO = Nothing
Set objFile = Nothing
]]>
</script>
</job>
</package>
Run Code Online (Sandbox Code Playgroud)
所以现在,最后,在最后一刻,我们有一个完整而可行的答案,显然是非常深奥的问题,除了我自己已经处理过(或者是一个非常严密保密的秘密,我不确定哪个):你好吗?在存储之前对JavaFX包创建的可执行文件进行代码签名?
.exe将始终存储在WSF脚本文件的一个目录中,因此相对路径始终是<FILENAME>\<FILENAME.exe>
.
我真的,真的希望有一天这会给某人带来很多悲伤......
添加以下内容作为package/windows/MyProject.iss文件的第一行:
#expr Exec("C:\Program Files (x86)\Windows Kits\8.0\bin\x64\signtool.exe", "sign /n CompanyName /tr tsa.starfieldtech.com " + AddBackslash(SourcePath) + "MyProject\MyProject.exe")
Run Code Online (Sandbox Code Playgroud)
要确保exe文件可写,请添加package/windows/MyProject-post-image.wsf:
<?xml version = "1.0" ?>
<package>
<job id="CodeSign">
<script language = "VBScript">
<![CDATA[
'Set File as Normal. . .
Dim objFSO, objFile
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("MyProject\MyProject.exe")
objFile.Attributes = 0
]]>
</script>
</job>
</package>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
708 次 |
最近记录: |