狀況描述:
打包安裝后,如果刪除安裝目錄中的某個文件,這時從桌面快捷方式啟動軟件系統會自動運行修復程序,此時因為路徑問題會報出“錯誤 1001 在初始化安裝時發生異常xxx”的異常。(前提是你的安裝部署中加入了“自定義操作”,並為其傳值)。
查找原因原來是“自定義操作”中CustomActionData值有誤造成。未出錯前的CustomActionData。
/DbName=[DBNAME] /ServerName=[SERVERNAME] /User=[USER] /Password=[PASSWORD] /SetupType=[SETUPTYPE]
解決方法:
分別在兩個雙引號旁邊增加單引號。
需要修改 CUStomActionData 的傳值方式,由以前的 /key="[value]\" 改為 /key=“'[value]\'"。
例如: /sourceDir="'[SourceDir]\'" /InstallDir="'[TARGETDIR]\'" /InstallName="Monitor"
這樣在安裝類中得到的參數會多出倆個'',例如 ‘c:\a\b’,這時需要手工處理一下。這樣問題解決了。
如果卸載安裝包報錯:“初始化安裝時發生異常,找不到**文件”,有可能是安裝程序代碼位置錯誤。
如:
string settxtPath = setupSourcePath + "set.txt";
dataList = getSetConfig(settxtPath);//讀取安裝包的配置文件
base.Install(stateSaver);
因為在安裝和卸載時,會自動運行修復程序,所以在base.Install(stateSaver)前的代碼都要執行,所以卸載導致報錯:“找不到set.txt”。
修改為:
string settxtPath = setupSourcePath + "set.txt";
base.Install(stateSaver);
dataList = getSetConfig(settxtPath);//讀取安裝包的配置文件
就可以了。