1. 程式人生 > >實現Installshield對Php+mysql+apache做的程式在WINDOWS下打包

實現Installshield對Php+mysql+apache做的程式在WINDOWS下打包

undefinedundefined用Installshield對Php+mysql+apache做的程式在WINDOWS下打包;
在電腦上安裝Php+mysql+apache,並配置,可以正常使用;
我的安裝目錄:C:/php ; C:/mysql ; C:/Program Files/Apache Group
打包思路:將安裝好的Php,mysql,apache,和程式檔案通過安裝軟體複製到電腦裡,注意安裝時的安裝路徑是我規定的,不能由使用者來自定義路徑;然後啟動apache和mysql服務;即可使用了;問題是apache的配置檔案中的servername是否需要根據不同機器主機名和埠來改變;服務如何安裝和啟動;
我使用的方法:
1,首先準備好一切有關的檔案(PHP原始碼檔案;php全部檔案;mysql安裝後的全部檔案;apache安裝後的全部檔案),將這些檔案放到一個資料夾裡(只是方便,沒有特殊用處);
2,apache的httpd.conf配置檔案要如何在安裝後能自動配置好;就對該檔案進行研究;開始的時候想獲得主機名,然後替換掉檔案中servername +主機名+埠號這一行;埠號我用了一個不常用的60066;後經過實驗證明servername +主機名+埠號這一行 可以註釋或刪除掉;也可以正常使用,但“listen 埠號”必須存在並正確,否則服務是無法啟動的;但還有個事情就是我可以寫很多個listen 埠號;比如;listen 8080,listen 8088;listen 60066;這樣我用哪個埠號都可以正常執行;但推薦一個就好;最後你配置好的httpd.conf檔案只要把servername +主機名+埠號這一行註釋掉或刪除,不需要其他的配置了;
3,如何安裝相關的服務到windows服務裡,並自行啟動;對apache和mysql都有相應的命令來安裝,啟動,停止和解除安裝服務;我的方法(有更簡單的)是用文字寫出這幾個命令;
如:
在文本里寫入:
"C:/Program Files/Apache Group/Apache2/bin/Apache.exe" -k install
註釋:安裝apache服務到window服務裡;
儲存文字副檔名為BAT;這樣你開啟該檔案就會將apache服務安裝到windows服務裡;
有關命令:
apache命令
"C:/Program Files/Apache Group/Apache2/bin/Apache.exe" -k install 安裝apache服務到window服務裡
"C:/Program Files/Apache Group/Apache2/bin/Apache.exe" -k start 啟動apache服務
"C:/Program Files/Apache Group/Apache2/bin/Apache.exe" -k stop 停止apache服務
"C:/Program Files/Apache Group/Apache2/bin/Apache.exe" -k uninstall 解除安裝apache服務從window服務裡
mysql命令:
c:/mysql/bin/mysqld-nt -install 安裝MYSQL服務到WINDOW服務中
c:/mysql/bin/mysqld-nt -remove 從WINDOW服務中刪除MYSQL服務
net start mysql 啟動MYSQL服務
net stop mysql 停止MYSQL服務
這樣我做了8個BAT檔案;在複製完所有的檔案後呼叫安裝和啟動的4個檔案。解除安裝的時候呼叫停止和解除安裝檔案;
這樣問題就解決了。剩下的就是用Installshield來做安裝盤了;詳細就不多說了;在腳本里寫了一個函式,該函式的作用就是複製完所有檔案,結束安裝後執行,安裝和啟動服務;如下:
function OnEnd()
STRING szTitle, szMsg1, szMsg2;
NUMBER nOption, nReserved;
STRING strTempFile;
STRING strStopFile;
STRING strUninstFile;
STRING strStopMyFile;
STRING strUninsMytFile;
begin

strStopFile = "C://Program Files//Apache Group//Apache2//bin//install.BAT";
LaunchAppAndWait (strStopFile,"",WAIT);
strUninstFile = "C://Program Files//Apache Group//Apache2//bin//start.BAT";
LaunchAppAndWait (strUninstFile,"",WAIT);
strStopMyFile = "C://mysql//installS.bat";
LaunchAppAndWait (strStopMyFile,"",WAIT);
strUninsMytFile = "C://mysql//start.BAT";
LaunchAppAndWait (strUninsMytFile,"",WAIT);
end;
注意:我的安裝路徑是根據剛安裝配置好的;
C:/php ; C:/mysql ; C:/Program Files/Apache Group
也就是要與配置檔案裡的路徑一致;

最後的一個問題就是我們辛辛苦苦寫的程式都是明碼的是可以見到的;那麼我們就需要對PHP原始碼進行加密;
我的加密是使用了一個軟體Zend Encoder;很貴的;我下了個試用的;可以到網上去找;
通過Zend Encoder 的IDE程式編譯,實現對PHP檔案的加密,並適度擴充套件其功能應用。( 注:加密後的PHP檔案需要客戶端的Zend Optimizer支援才能正常執行)
具有以下特點:完全保護智慧財產權,支援多專案配置;自定義引數(ZEU的功能性引數);支援副檔名過濾。
其中提到的Zend Optimizer是免費的;相關內容網上很多;
這兩個軟體的使用可以在網上查到;很簡單;
將這兩個軟體安裝到機器裡;剛剛我們配置好的機器;
然後執行Zend Encoder將我們寫好的PHP原始碼檔案進行編譯。儲存;
而Zend Optimizer。我們僅僅需要的是一個ZendOptimizer.dll檔案;(我的安裝路徑C:/Program Files/Zend)不同的PHP版本在安裝後的目錄裡都可以得到;找到你的PHP版本的該DLL檔案;打包時需要注意的是路徑;我設定的是:C:/Program Files/Zend/lib;
這樣就可以用Installshield打包;
完成;
寫的是有點羅嗦;不過我想大家應該看的明白吧!呵呵!還有更簡單的方法;希望有人可以提供出來;第一次寫;不好;多謝PHP中問網的monkeye給我的幫助