1
當從與Installshield的處理dark.exe MSI文件從Visual Studio 2013生成時其生成與所述誤差的多個實例文件文件是:未解決的引用CustomAction:</p> <pre><code>Unresolved reference to symbol 'CustomAction:CleanUp' </code></pre> <p>的WXS的部分:在清理維克斯
<Dialog Id="SetupCompleteSuccess" X="50" Y="50" Width="374" Height="266" Title="[ProductName] - InstallShield Wizard" NoMinimize="yes">
<Control Id="OK" Type="PushButton" X="230" Y="243" Width="66" Height="17" Text="&Finish" TabSkip="no" Default="yes" Cancel="yes">
<Publish Event="DoAction" Value="CleanUp">ISSCRIPTRUNNING="1"</Publish>
<Publish Event="DoAction" Value="LaunchProgramFileFromSetupCompleteSuccess">LAUNCHPROGRAM And PROGRAMFILETOLAUNCHATEND <> "" And NOT Installed</Publish>
<Publish Event="EndDialog" Value="Exit">1</Publish>
<Publish Event="DoAction" Value="ShowMsiLog">MsiLogFileLocation And (ISSHOWMSILOG="1") And NOT ISENABLEDWUSFINISHDIALOG</Publish>
</Control>
望着MSI與ORCA文件,表CustomAction包含LaunchProgramFileFromSetupCompleteSuccess條目(不拋出一個錯誤)和清理的條目,所以dark.exe始終表現爲它創建一套CustomActions如下s:
<CustomAction Id="ISPreventDowngrade" Error="[IS_PREVENT_DOWNGRADE_EXIT]" />
<CustomAction Id="ISRunSetupTypeAddLocalEvent" BinaryKey="ISExpHlp.dll" DllEntry="RunSetupTypeAddLocalEvent" />
<CustomAction Id="ISSelfRegisterCosting" BinaryKey="ISSELFREG.DLL" DllEntry="ISSelfRegisterCosting" />
<CustomAction Id="ISSelfRegisterFiles" BinaryKey="ISSELFREG.DLL" DllEntry="ISSelfRegisterFiles" Execute="deferred" Impersonate="no" />
<CustomAction Id="ISSelfRegisterFinalize" BinaryKey="ISSELFREG.DLL" DllEntry="ISSelfRegisterFinalize" />
<CustomAction Id="ISUnSelfRegisterFiles" BinaryKey="ISSELFREG.DLL" DllEntry="ISUnSelfRegisterFiles" Execute="deferred" Impersonate="no" />
<CustomAction Id="SetARPINSTALLLOCATION" Property="ARPINSTALLLOCATION" Value="[INSTALLDIR]" />
<CustomAction Id="SetAllUsersProfileNT" Property="ALLUSERSPROFILE" Value="[%SystemRoot]\Profiles\All Users" />
<CustomAction Id="setAllUsersProfile2K" Property="ALLUSERSPROFILE" Value="[%ALLUSERSPROFILE]" />
<CustomAction Id="setUserProfileNT" Property="USERPROFILE" Value="[%USERPROFILE]" />
<CustomAction Id="ShowMsiLog" Directory="SystemFolder" ExeCommand="[SystemFolder]notepad.exe "[MsiLogFileLocation]"" Return="asyncNoWait" />
<CustomAction Id="LaunchProgramFileFromSetupCompleteSuccess" BinaryKey="NewBinary19" DllEntry="LaunchProgram" />
<CustomAction Id="ISPrint" BinaryKey="SetAllUsers.dll" DllEntry="PrintScrollableText" />
我應該如何處理這個問題?
如何識別在DLL中的自定義操作的存在?我應該看哪些dll? – SimonKravis
是您創建的安裝程序。如果是這樣,那麼我猜你可以得到自定義操作的源代碼。如果不是由您創建的,請使用*'dark -x ./ YourInstaller.msi'*,它將創建*'Binary'*文件夾。檢查該文件夾內部是否有文件包含*'CleanUp'*。如果沒有清潔,那麼我很抱歉,我不能很有幫助。 – JSR
有一個二進制文件夾,它包含19個名爲NewBinaryN的文件,其中N的範圍是1到19.文件1-18看起來像是圖像.NewBinary19是一個dll,但似乎用於啓動程序。在msi文件CustomAction表中的條目是'LaunchProgramFileFromSetupCompleteSuccess NewBinary19 \t LaunchProgram' – SimonKravis