2011-11-15 46 views
0

我們要求用戶在他們的jre/lib/ext文件夾中有QTJava.zip的副本,以便我們可以在不添加類路徑的情況下播放QuickTime文件。 QuickTime爲此提供了一個安裝過程:http://commons.oreilly.com/wiki/index.php/QuickTime_for_Java:_A_Developer%27s_Notebook/Getting_Up_and_Running_with_QuickTime_for_Java(請參閱標記爲的部分預檢QTJ安裝)因此,基本上我們需要從安裝程序中運行QT相關文件 - 因爲QT已經安裝,它將啓動電影播放器​​運行「.mov」文件時。如何從NSIS安裝程序運行QuickTime相關的文件?

我們有一個選擇對話框,用戶可以選擇他的JRE,並且我們希望在這一步之後立即運行這個安裝程序(假設QTJava已經不存在了;我們會檢查這個)。假設「.mov」文件駐留在基本安裝文件夾中,那麼「運行」該文件涉及哪些步驟?到目前爲止沒有任何工作,並列出我們嘗試過的每種方法將佔用頁面,所以新的視角會有幫助。

+0

? QuickTime可以安裝在系統上,但JRE可能沒有QTJava.zip;其他可以播放.mov文件的播放器可以安裝...你最終想要達到什麼目的? –

+0

我們使用QTJava來播放我們應用程序中的文件,因此該位置需要存在於類路徑中。因爲我們需要QTJ播放QT文件,所以用戶安裝了其他應用程序並不重要。 – wade

+0

所以想在應用程序中播放.mov文件,是不是?然後這個問題與安裝程序無關(您似乎已經解決了這個問題),您應該閱讀* QTJava API文檔*。 –

回答

1

運行非.exe/.cmd/.bat文件需要ExecShell。 ExecShell與「即將獲得的資源管理器」中的「雙擊」非常接近。

但是這裏有一個問題,.mov是一個常見的擴展,你不知道最終用戶打開.mov文件是什麼,它可能是MPC,VLC,mplayer等,所以只是使用ExecShell可能會失敗。

它可能是更好地試圖找到QT,然後直接執行它:爲什麼你需要用戶擁有QTJava.zip玩.MOV

ReadRegStr $0 HKLM "SOFTWARE\Apple Computer, Inc.\Quicktime" "InstallDir" 
ExecShell "" '"$0\QuicktimePlayer.exe"' '"$Instdir\MyFile.mov"' 
+0

我知道我必須將該文件作爲arg調用QuickTimePlayer.exe - 抱歉,我對此沒有明確說明。但上述方法不起作用有兩個原因:.mov文件不存在於磁盤上供QT執行(錯誤-43),並且安裝程序立即繼續。由於我們需要知道用戶是否實際安裝了QTJ,因此該過程需要像ExecWait一樣行事。有沒有辦法將這個文件複製到磁盤(可能在某個臨時文件夾中?),然後使用ExecWait運行?我試過使用$ PLUGINSDIR這個方法,但是文件夾沒有創建,所以沒有任何東西可以複製到那裏。 – wade

+0

@wade在複製到$ pluginsdir之前使用InitPluginsDir。 – Anders

相關問題