簡體   English   中英

使用Installshield 16創建的安裝期間自定義操作無法執行

[英]Custom Action failing to execute during installation created with Installshield 16

過去,我已經使用適用於Visual Studio的Installshield限量版運行了此自定義操作,並且該方法已經起作用。 但是現在當我在Installshield 2016中嘗試此操作時,此自定義操作給我一個1722錯誤並回滾了安裝。 日志文件沒有提供比“失敗,出現錯誤1 ...”和1722錯誤更多的詳細信息。

通過向導我的自定義操作設置-

工作目錄:InstallDir

文件名和命令行:“ [SystemFolder] cmd.exe” / c“ [INSTALLDIR] somefilename.exe”“'%r''%keyname = keyname''%keydll = some.dll''%appexe = [INSTALLDIR]不同的文件名。可執行程序'”

這應該做的是從命令行運行somefilename.exe,參數為“%r”,“%keyname”,“%keydll”和“%appexe”。

當我直接在命令行上運行它時--“ C:\\ Program Files(x86)” \\ somefilename.exe“%r”“%keyname = keyname”“%keydll = some.dll”“%appexe = C:\\程序文件(x86)\\ differentfilename.exe”-運行正常。

我想我在某些地方缺少一些引號,並且嘗試了各種組合但沒有運氣。

有什么想法我做錯了嗎?

提前致謝!

一些建議:

您應該發布與此相關的詳細MSI日志部分,因為假定您已創建完整的詳細日志而不是部分的日志,那么它應顯示完整的已解析命令行。

目前尚不清楚為什么需要運行帶有cmd外套的程序。 如果是普通的Windows程序,只需將可執行文件作為自定義操作即可運行。

從交互式用戶資源管理器外殼程序運行時,將獲得一些由msiexec.exe進程啟動的自定義操作無法獲得的基礎結構(例如工作目錄)。 這很重要,因為您尚未指定some.dll的顯式完整路徑,因此可以找到該文件並不明顯。

講一些有關此自定義操作的運行位置及其類型的信息可能會很有用。 例如,如果將其轉換為立即自定義操作(所有VS自定義操作都被延遲),則它將失敗,因為尚未安裝任何文件。 同樣,如果將其推遲,但以某種方式在InstallFiles標准操作之前執行,它將失敗。

由Visual Studio生成的項目運行的所有自定義操作都將推遲,並在每個系統的“每個人”安裝中使用系統帳戶運行。 如果您的自定義操作需要提升,則還必須推遲它,並且MSI必須顯示UAC提升對話框,因為否則它可能會很好地運行,但會因訪問錯誤而失敗。 對於每個用戶安裝,它可能已變為非高架。

感謝@PhilDW的建議。

我可能會拿出cmd外套,然后運行exe並嘗試。

我終於通過更改一些引號等使它工作了。這是最終的FileName&Command Line參數如下所示:

“ [SystemFolder] cmd.exe” / c開始“” / d“ C:\\ Program Files(x86)\\ foldername \\”“ somefile.exe”“%r”“%keyname = something”“%keydll = something.dll “”%appexe = C:\\ Program Files(x86)\\ otherfilename.exe“

希望這對某人有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM