InstallShield 12 Premier卸載程序快捷方式

本文主要是針對艾澤拉斯之海洋女神出品(四) --高級設置二 中的【完美卸載】,做出自己的看法,不針對任何人。

        程序即將發佈,但面臨打包問題。花了兩天時間,在網上找資料及學習InstallShield。主要學習資料來源于海洋女神博客。最終將InstallShield 12 Premier 搭建好。馬上動手實踐,期待見證時刻。

親身下河知深淺!因爲有做程序的功底,再結合網上的資料,前段進展很是樂觀。但是,快要結束時困難來了。卸載程序!卸載快捷方式!

看了海洋女神的博客---完美卸載 一節,自己動手實踐。卸載程度時還是不行!以爲是代碼錯誤,繼續檢查,編譯,DEBUG....還是不行!關鍵問題在於:

AddFolderIcon ( szProgramFolder, szItemName, szCommandLine, szWorkingDir, szIconPath, nIcon, szShortCutKey, nFlag );

此函數中的 szCommandLine參數!

出自海洋女神博客代碼:

function OnFirstUIAfter()

STRING szfilename,szFolder ,szmsg1,szmsg2;

NUMBER nresult;

begin

//創建刪除快捷方式

szfilename = UNINSTALL_STRING +" /UNINSTALL";

nresult = StrFind(szfilename,".exe");

if nresult >=0 then

StrSub(szmsg1,szfilename,0,nresult + 4);

StrSub(szmsg2,szfilename,nresult + 4,200);

LongPathToQuote(szmsg1, FALSE );

LongPathToQuote(szmsg2, FALSE );

szfilename = "/"" + szmsg1 + "/"" +szmsg2;

endif;

AddFolderIcon(FOLDER_PROGRAMS^"Test","Uninstall",szfilename,WINDIR,"",0,"",REPLACE);

End;

我們來看給AddFolderIcon函數中的szCommandLine參數,所傳的值爲:szfilename,而szfilename = UNINSTALL_STRING +" /UNINSTALL";

經過查找幫助文檔中對UNINSTALL_STRING的解釋,這樣賦值沒問題;但後來聯想到命令行語句,隨手就查了在InstalShield中的Setup.exe命令行的解釋說明,卸載參數爲:/uninst。所以就想到既然UNINSTALL_STRING有預定義,那麼卸載程序命令也應該有預定義,要不然InstallSheild默認自帶的卸載是如何執行的;所以就在幫助文檔中,查找:UNINST開頭的,想不到真有。於是調試程序,取出UNINST的值與szfilename = UNINSTALL_STRING +" /UNINSTALL";對比之,頓時撥雲見日。原來szfilename = UNINSTALL_STRING +" /UNINSTALL"; 賦值時出現問題。問題找到,解決不用2分鐘。

經過在Win7 + InstallShield 12 調試的代碼應該爲:

szFileName = UNINSTALL_STRING + " -UNINSTALL";
nResult = StrFind(szFileName,".exe");
if nResult >= 0 then
StrSub(szMsg1, szFileName, 0, nResult + 4);
StrSub(szMsg2, szFileName, nResult + 4,200);
LongPathToQuote(szMsg1, FALSE);
LongPathToQuote(szMsg2, FALSE);
szFileName = "\"" + szMsg1 + "\"" + szMsg2;
endif;

AddFolderIcon(FOLDER_PROGRAMS^"Test","Uninstall",szfilename,WINDIR,"",0,"",REPLACE);

在此感謝海洋女神,感謝CSDN......

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章