Luar's Flash Playground:修改Screenweaver Uninstaller來支持中文Windows
修改Screenweaver Uninstaller來支持中文Windows (12-07-2003)

Screenweaver被譽為最好的Flash桌面應用程式製作工具,它可以將Flash通過它的Builder轉成獨立執行的Exe、熒幕保護程式或者打包成Installer,讓使用者安裝Flash應用程式,可惜它打包出來的Installer,包括一個Uninstaller,當用Installer安裝好Flash應用程式後,Start Menu的Flash應用程式Folder會多了一個Uninstall的選項,利用它,理論上可以反安裝Flash應用程式,可惜這Uninstaller不支持中文Windows,單擊它後,出現的竟然又是Installer!

原來Builder轉成的Installer和Uninstaller是同一個文件,通過Uninstall後傳入一個參數Argument "/uninstall" 來分辨。打開Screenweaver安裝Folder下resources的install.fla,Layer initialization script的Frame 2,打開Action Panel,第48行:

if( swApplication.getCmdLineArg(1) == "/uninstall" )

在中文Windows執行下會產生的獨特問題,Uninstaller Path傳入來的參數不能夠用空白格分開,期間多了一些亂碼(例如:C:\DOCUME~1\luar\LOCALS~1\Temp\rd179.tmp|洱/uninstall|洱2464|洱),因此代碼不能夠認出參數"/uninstall",所以永遠沒有可能執行反安裝。

因此,我修改了這行代碼,直接用IndexOf找找有沒有"/uninst"這字符串來決定它是否反安裝,將這行代碼修改為:

if (swApplication.getCmdLineArg().indexOf("uninst") != -1)

注意
如果Windows本身是英文版,但預設語言是中文的話,都會有以上中文Windows的問題。

注意
以上修改反會使英文版Windows的Uninstaller無法執行,出現類似中文版情況,選Uninstall反出現Install程序。

因此最後結合兩者的代碼在if中:

if (swApplication.getCmdLineArg(1) == "/uninstall" or swApplication.getCmdLineArg().indexOf("uninst") != -1)

注意
由於應付中文版的if判斷條件是搜尋"uninst"字符串的存在,因此應用程序的名稱最好不要包含"uninst"。

本文章由發表。
意見
"; print "沒有意見。
 "; } ?>
  • 在試版中的3.64版本中,我看見這一升句是在第51行的...
    if( swApplication.getCmdLineArg(1) == "/uninstall" )
    是新版本的問題嗎?

    由mrlee於01-09-2003發表

  • 請問screenweaver怎麼用阿, 安裝以後,flash中會有很多它的命令, 如何使用這些命令阿, 有沒有系統的教程阿 luar ?

    jerrowolf於02-09-2003發表

  • 哦, 找到幫助了, 可以學習了, 呵呵

    jerrowolf於02-09-2003發表

同組文章