2017-06-23 26 views
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="&amp;Finish" TabSkip="no" Default="yes" Cancel="yes"> 
       <Publish Event="DoAction" Value="CleanUp">ISSCRIPTRUNNING="1"</Publish> 
       <Publish Event="DoAction" Value="LaunchProgramFileFromSetupCompleteSuccess">LAUNCHPROGRAM And PROGRAMFILETOLAUNCHATEND &lt;&gt; "" 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 &quot;[MsiLogFileLocation]&quot;" Return="asyncNoWait" /> 
    <CustomAction Id="LaunchProgramFileFromSetupCompleteSuccess" BinaryKey="NewBinary19" DllEntry="LaunchProgram" /> 
    <CustomAction Id="ISPrint" BinaryKey="SetAllUsers.dll" DllEntry="PrintScrollableText" /> 

我應該如何處理這個問題?

回答

0

查找哪些DLL「清理」自定義操作存在並添加引用

<Binary Id="CleanupBinary" SourceFile="Your location of the CleanUp Dll" /> 
<CustomAction Id="CleanUp" BinaryKey="CleanupBinary" DllEntry="Your cleanup custom action name" /> 
+0

如何識別在DLL中的自定義操作的存在?我應該看哪些dll? – SimonKravis

+0

是您創建的安裝程序。如果是這樣,那麼我猜你可以得到自定義操作的源代碼。如果不是由您創建的,請使用*'dark -x ./ YourInstaller.msi'*,它將創建*'Binary'*文件夾。檢查該文件夾內部是否有文件包含*'CleanUp'*。如果沒有清潔,那麼我很抱歉,我不能很有幫助。 – JSR

+0

有一個二進制文件夾,它包含19個名爲NewBinaryN的文件,其中N的範圍是1到19.文件1-18看起來像是圖像.NewBinary19是一個dll,但似乎用於啓動程序。在msi文件CustomAction表中的條目是'LaunchProgramFileFromSetupCompleteSuccess NewBinary19 \t LaunchProgram' – SimonKravis

相關問題