2017-05-31 115 views
0

我正在使用installshield 2016的MSI安裝程序工作。我正在嘗試向卸載添加一個自定義操作,該操作在卸載軟件之前運行一個工具。該工具隨軟件一起安裝,需要以管理員模式運行。該工具旨在在卸載開始之前運行一些手動清理操作。在卸載過程中未執行的自定義操作

我已經使用「新建EXE>路徑引用目錄」使用自定義操作嚮導添加了自定義操作。 INSTALLDIR在目錄表中定義幷包含用戶定義的安裝路徑。 .exe和參數的名稱是替代品。

工作目錄:INSTALLDIR
文件名&命令行:tool.exe /動作參數1參數參數3
退貨處理:同步
在腳本執行:在系統上下文
執行schedulintg延遲執行:始終執行
MSI類型號碼:3170
在補丁卸載期間運行:否
安裝執行順序:在AnotherCustomAction之後
安裝執行條件:

注意:AnotherCustomAction設置爲在InstallInitialize之後執行。它與這個非常相似,但正確執行。

(我知道的安裝EXEC條件最終應REMOVE =「ALL」,但我刪除,在某些時候,以確保不造成問題)

期間INSTALLDIR屬性寫入註冊表安裝;我已經添加了AppSearch和RegLocator條目以確保它被回讀。

我已經運行安裝程序與啓用日誌記錄,並且我看到以下內容:

MSI(S)(30:14)[13:57:19:162]:執行運算:ActionStart(名稱= RunTool ,,)
MSI(s)(30:14)[13:57:19:162]:執行op:CustomActionSchedule(Action = RunTool,ActionType = 3170,Source = C:\ Installation Test \,Target = tool.exe/action parameter1 parameter2 parameter3,)
MSI(s)(30:14)[13:57:19:162]:注意:1:1721 2:RunTool 3:C:\ Installation Test \ 4: tool.exe/action parameter1 parameter2 parameter3
Info 1721.此Windows Inst存在問題過敏包。此安裝完成所需的程序無法運行。聯繫您的支持人員或軟件包供應商。操作:RunTool,位置:C:\ Installation Test \,命令:tool.exe/action parameter1 parameter2參數3

如果我到了文件夾C:\ Installation Test \並手動運行tool.exe/action parameter1參數2參數3,一切都按照它應有的方式工作。在某個時候,有人提出可能問題是安裝路徑中存在空間,但是如果嘗試使用不帶空格的路徑,則無法解決此問題。

任何想法這裏怎麼了?這是正確的方法嗎?

我無法提供項目本身(公司政策),但我會盡力回答您可能有的任何其他問題。

+0

AnotherCustomAction計劃在哪裏?此CA是否安排在InstallInitialize和InstallFinalize之間? –

回答

0

我只有使用InstallShield 2015的經驗,並發現自定義操作有時有點棘手,我其實只是想發表評論(但我的代表太低)讓您嘗試而不是回答所以希望人們不會太苛刻,如果這不起作用。首先,將您的返回處理設置爲同步(忽略退出代碼),然後即使您可以指定正確的文件夾,請嘗試在文件名和命令中明確設置路徑,然後將文件名和參數分別用引號引起來。

例子:

工作目錄:INSTALLDIR

文件名&命令行: 「[INSTALLDIR] tool.exe」 「/動作」, 「參數1」 「參數2」 「參數3」

我還沒有使用MSI 3170型,但已將其用於類型1122,1058和1250.

正如克里斯托弗提到的你也會想看看調度,但包裝在報價不應該傷害。

祝你好運。

0

最可能的問題是您運行的CA未被升級,因此升級。這意味着它使用系統帳戶運行,所以失敗可能與在該交互式用戶上下文中使用此帳戶而不是從shell運行相關聯。作爲系統,它將無法訪問任何有意義的用戶位置(例如桌面文件夾和其他人,HKCU),並且無法與交互式用戶的桌面交互(出於安全原因,與不允許與桌面交互的系統服務相同)。它不會有工作目錄(因爲默認設置是由資源管理器設置的,而不是你如何運行),並且它不具有網絡訪問權限。基本上,您需要使用系統帳戶運行代碼並查看失敗點,或者您可能會在代碼中看到該列表中的某些內容。

相關問題