首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用nsis打包应用程序安装程序和.wav文件不起作用,因为Windows上有一个包含空格->Program%20文件的路径

使用nsis打包应用程序安装程序和.wav文件不起作用,因为Windows上有一个包含空格->Program%20文件的路径
EN

Stack Overflow用户
提问于 2013-08-08 23:03:47
回答 2查看 155关注 0票数 1

我遇到了一个问题,涉及到一个audioInputStream、一个资源文件夹和一个用于Windows安装的nsis。我正在开发一个应用程序(在Linux中),它在事件发生时执行桌面通知,除了当通知弹出时应该播放的.wav文件之外。我在64位Windows机器上测试了这个应用程序,没有通过nsis安装它,它运行得很好。我收到一条错误消息,指出:

07/08/13 12:17:26错误com.alcatel.proserv.e911.desktopNotifierMessaging.desktopNotifierMessageHandler.DesktopNotifierMessageAlertHandler -错误: java.io.FileNotFoundException: C:\Program%20Files\Alcatel-Lucent\E911DesktopNotifier\classes\audio\siren.wav (Le chemin d‘’accès spécifiéest introuvable)

我在Netbeans中工作,并使用maven来构建。下面是我如何加载路径的代码片段:

代码语言:javascript
复制
    String filename = this.getClass().getResource("/audio/siren.wav").getPath();
    AudioInputStream audioInputStream = null;
    try{
    audioInputStream = AudioSystem.getAudioInputStream(new File(filename).getAbsoluteFile());
    Clip clip = null;           
clip = AudioSystem.getClip();       
clip.open(audioInputStream);        
    clip.start();
    }
    ...

我发现这个博客详细介绍了如何修复一个极其相似的问题:http://braintwitter.blogspot.ro/2013/03/url-encoding-issue-with-tomcat.html

但是它没有与我正在工作的audioInputStream一起工作。

我知道“$PROGRAMFILES64”中的空间存在问题,这是我必须设置安装的地方,因为当我将setup.nsi脚本中的setup.nsi值从$PROGRAMFILES64更改为$WINDIR时,它工作得很好。

由于程序文件中的空间导致编码问题,有人对我如何修改代码以正确工作有任何建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-08 23:19:14

getResource()返回一个URL,并在这里应用了URL编码。你有两个选择。您可以转换为URI

代码语言:javascript
复制
String filename = this.getClass().getResource("/audio/siren.wav").toURI().getPath();

或者,您可以使用URLDecoder在将路径传递到AudioInputStream之前对路径进行解码。

代码语言:javascript
复制
String filename = this.getClass().getResource("/audio/siren.wav").getPath();
filename = URLDecoder.decode(filename, "utf-8");

请参阅java.net.URL简介部分末尾的空白页。

票数 1
EN

Stack Overflow用户

发布于 2022-01-29 07:21:53

所以我知道这是一个很老的线索,但是任何读过这篇文章的人,都要三思而后行,因为nsis软件包创建了这个恶意软件,就像在一台电脑上扫描病毒一样,电脑上运行着malware、avira、Rogue杀手、hitman pro和stinger。

代码语言:javascript
复制
Antiy-AVL - Trojan/Generic.ASMalwS.3506C16,  Avast-Win64:Malware-gen, AVG - Win64:Malware-gen,  Cyren - W64/Tedy.B.gen!Eldorado, Jiangmin -Trojan.PSW.Python.fv, Zillya -Trojan.Disco.Script.653
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18137682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档