2014-02-06 31 views
2

我知道還有另外兩個問題在這裏遇到了同樣的問題,但我的實際情況是嘗試了那裏的建議,並希望自那時起還有其他一些方法可用於人們。什麼是pp的正確調用來打包這個目錄結構?

設置是這樣的: 我有一個應用程序與多個模塊,我想與安裝了Strawberry Perl發行版的Windows計算機上的人共享。

它的結構是這樣的:

PerlApp 
lib 
    Base 
    Base.pm 
    Gui.pm 
    Db 
    Db.pm 
    records.db 
    Parser 
    Parser.pm 
    Utils 
    Utils.pm 
PerlApp.pl 
Config.txt 

所有這有兩個入口。我可以通過使用PerlApp.pl腳本的cmd界面運行它,或者運行包含Wx界面的Gui.pm文件。

我正在運行Strawberry Perl,這個程序使用了從CPAN安裝的多個模塊。我嘗試過使用Cava Packager,不幸的是它不支持我開發的perl版本。

我試過pp但是打包cmd腳本導致的可執行文件導致了各種錯誤。我查閱了文檔,但是對於我來說,我無法弄清楚如何使用這個模塊打包一個完整的目錄樹,或者甚至是支持它。 (電話簿文件綜合徵)

我試圖

pp -o app.exe PerlApp.pl 

的錯誤是:

The locale codeset (cp1252) isn't one that perl can decode, stopped at Encode/Locale.pm line 94 
Compilation failed in require at LWP/UserAgent.pm line 1000 
Compilation failed in require at lib/Base/Base.pm line 9 

最後的手段解決方案是包裝所需的所有文件,並找出需要什麼CPAN模塊安裝在外部機器使其工作並最終要求用戶自己手動安裝它們。

+0

'pp'可能是要走的路。如果您的使用有問題,最好向我們展示錯誤消息等等 - 理想情況下,這是一個完整的,最小的,可運行的示例,可以說明您的問題。然後我們可以試着幫助你。我們無法通過指向[Magic :: FairyWand]模塊v0.42來幫助你,它可以解決你所有的問題,而無需進一步的努力](https://metacpan.org/pod/Magic:FairyWand),因爲它不存在。 – amon

+0

我的使用問題是我不明白它的用法。我知道是荒謬的。鑑於我在操作中提到的結構,我怎樣才能真正運行它,甚至可以窺見輸出。我嘗試了明顯的pp -o bla.exe PerlApp.pl。但是我非常懷疑這種方式,除非pp巧妙地在目錄中環顧四周,這就像你說的,一個仙女的願望。 – user3046061

+0

啊。也許你可以[編輯]你的問題,這樣更明顯的是你實際上在詢問:*'pp'打包這個目錄結構的正確調用是什麼 - 'some command' does not work。*「我不'沒有必要的知識來回答這個問題,但你可以讓其他人更容易。 – amon

回答

1

當我打包一個perl腳本時,我曾經有一個類似的與charset(或Windows上的代碼頁)相關的錯誤。我到處搜索,但沒有找到任何直接的答案,但最終我自己找到了答案。

  1. 其實Encode模塊能夠解碼CP1252,真正的問題是,在Encode::Locale RUNTIME 確定適當的字符集,但PP只是在編譯時增加了必要的依賴關係(如果我可以這麼說)。因此,您需要在用於添加運行時相關性的命令中添加-x選項。
  2. 完全避免Encode::Locale。即使您將必要的解碼器pm包裝到您的可執行文件中,但在另一個具有不同字符集的系統上運行時,也會出現類似的錯誤。我建議你找出你的代碼的哪一行使用Encode::Locale並找出解決方法。
相關問題