2012-07-30 40 views
0

我有幾個程序,而不是在Cygwin本機上安裝,我將使用cygstart + cygpath無縫地利用這些程序的Windows安裝代替。Bash腳本,可以無縫地調用Windows EXE,而無需調用每個文件名參數的cygpath

例子:Gedit的,顛覆1.6.1等

我們當然會只使用Cygwin的安裝程序到本地安裝這些......但是,我們有一些討厭的要求:

1)自定義前綴位置,例如GEdit的Cygport將安裝它在我們需要的/usr/bin/gedit.exe而不是/common/web/bin/gedit.exe

2)我們需要一個不容易從任何cygwin存儲庫訪問的版本。

因此,我安裝Windows安裝程序版本的產品,然後創建一個bash腳本,透明地調用Windows程序。示例:/common/web/bin/gedit是一個bash腳本,它將調用c:\apps\gedit\gedit.exe

問題是,您不能只在每個參數上運行cygpath -w。你必須能夠只解析文件名參數。這基本上需要進入每個項目的源代碼,找到int main(int argc, char** argv),然後逆向工程如何解析每個文件名。

有沒有人做過這個?我很想看看你是如何用bash腳本或C++程序做的。

+1

我不認爲你會找到一個完全一般的解決方案。你可以期望的最好的方法是針對你感興趣的特定實用程序的用例。問題變成:創建和維護這些腳本比除了安裝cygwin版本更難本地版本。 – antlersoft 2012-07-30 16:19:39

+0

請參閱我自己的這個問題的答案。你是對的,我用它來解決問題。 – 2012-07-31 16:03:18

回答

1

經過多一點實驗後,我發現這是一個自創的問題。

我的問題是我試圖用我自己的.sh文件包裝Windows本機代碼。然後,Cygwin沒有自動將它寫入寫平臺的路徑轉換。

關於svn 1.6.1,這裏是我做過什麼來解決這個問題:

  1. 安裝SVN在c:\apps\svn\1.6.1\
  2. 運行ln -s /cygdrive/c/apps/svn/1.6.1/bin/svn.exe /common/web/bin/svn.exe
  3. 重複步驟2的所有SVN exe文件的。
  4. 此時,/common/web/bin/svn.exe就好像它是Cygwin的一部分一樣工作!驚人!
相關問題