2

win mobile 6.0 プロジェクトを更新して、更新通知を許可しようとしています。

これを簡単にするために、Web インターフェースを介してインストーラー CAB ファイルを更新し、Web がアプリケーションのバージョンを自動的に判別できるようにしたいと考えています。

.net では、ファイルのバージョンを決定する方法は次のとおりです。

FileVersionInfo.GetVersionInfo

しかし、ファイルは CAB にあり、CAB にはバージョンがないため、バージョンを特定できません。

また、CAB コンテンツを抽出するための extract.exe ツールがあることも知っていますが、CAB がデバイスにインストールされている場合と同じ方法で抽出することはできません。たとえば、exe ファイルは次のように抽出されます。 APPEXENAME~1.026

そこからファイルのバージョンを取得できません。さらに、すべてのファイルが「APPEXENAME」で始まるため、どのファイルが「.exe」であるかさえわかりません。

私がやろうとしていることは可能ですか?または、更新するたびに手動でバージョン番号を入力する必要がありますか?

4

1 に答える 1

1

これはかなり古い質問ですが、ここに 1 つの答えがあります。

Windows CE CAB ファイルは通常、CabWizard で作成されます。これらの CAB ファイルの内容は、extract や 7z などのアーカイブ アプリで表示/一覧表示できます。ファイル名はマングルされ、ファイル名は CAB 内の xml ファイル内でマップされます。

サンプル ファイル リスト:

  000KBDUS.002
  0MSTSCAX.003
  00MVKLIB.004
  0TSCSCAN.006
  00WPCTSC.005
  FILTER~1.001
  REMOTE~1.000
  REMOTE~1.008
  _setup.xml
  TSCSHIFT.007

_setup.xml ファイルが表示されます。ファイル マッピング (実際のファイル名に変換) とその他の情報が一覧表示されます。

<wap-provisioningdoc>
  <characteristic type="Install">
    <parm name="InstallPhase" value="install"/>
    <parm name="AppName" value="Microsoft Remote Desktop Mobile"/>
    <parm name="NumDirs" value="3"/>
    <parm name="NumFiles" value="8"/>
    <parm name="NumRegKeys" value="4"/>
    <parm name="NumRegVals" value="15"/>
    <parm name="NumShortcuts" value="1"/>
  </characteristic>
  <characteristic type="FileOperation">
    <characteristic type="%CE2%" translation="install">
      <characteristic type="MakeDir"/>
      <characteristic type="filterfsd.dll" translation="install">
        <characteristic type="Extract">
          <parm name="Source" value="FILTER~1.001"/>
          <parm name="WarnIfSkip"/>
        </characteristic>
      </characteristic>
      <characteristic type="kbdus.dll" translation="install">
        <characteristic type="Extract">
          <parm name="Source" value="000KBDUS.002"/>
          <parm name="WarnIfSkip"/>
        </characteristic>
      </characteristic>
      <characteristic type="mstscax.dll" translation="install">
        <characteristic type="Extract">
          <parm name="Source" value="0MSTSCAX.003"/>
          <parm name="WarnIfSkip"/>
        </characteristic>
      </characteristic>
      <characteristic type="MvkLib.dll" translation="install">
        <characteristic type="Extract">
          <parm name="Source" value="00MVKLIB.004"/>
          <parm name="WarnIfSkip"/>
        </characteristic>
      </characteristic>
      <characteristic type="wpctsc.exe" translation="install">
        <characteristic type="Extract">
          <parm name="Source" value="00WPCTSC.005"/>
          <parm name="WarnIfSkip"/>
        </characteristic>
      </characteristic>
      <characteristic type="tscscan.txt" translation="install">
        <characteristic type="Extract">
          <parm name="Source" value="0TSCSCAN.006"/>
          <parm name="WarnIfSkip"/>
        </characteristic>
      </characteristic>
      <characteristic type="tscshift.txt" translation="install">
        <characteristic type="Extract">
          <parm name="Source" value="TSCSHIFT.007"/>
          <parm name="WarnIfSkip"/>
        </characteristic>
      </characteristic>
    </characteristic>
    <characteristic type="%CE2%\Help" translation="install">
      <characteristic type="MakeDir"/>
      <characteristic type="RemoteDesktopMobile.htm" translation="install">
        <characteristic type="Extract">
          <parm name="Source" value="REMOTE~1.008"/>
          <parm name="WarnIfSkip"/>
        </characteristic>
      </characteristic>
    </characteristic>
    <characteristic type="%CE11%" translation="install">
      <characteristic type="MakeDir"/>
      <characteristic type="Remote Desktop Mobile.lnk" translation="install">
        <characteristic type="Shortcut">
          <parm name="Source" value="%CE2%\wpctsc.exe" translation="install"/>
        </characteristic>
      </characteristic>
    </characteristic>
  </characteristic>
  <characteristic type="Registry">
    <characteristic type="HKLM\SYSTEM\CurrentControlSet\Control\Layouts\00000409">
      <parm name="Layout File" value="kbdus.dll" datatype="string"/>
      <parm name="Layout Text" value="US" datatype="string"/>
      <parm name="PS2_AT" value="kbdus.dll" datatype="string"/>
    </characteristic>
    <characteristic type="HKLM\Software\Microsoft\Terminal Server Client">
      <parm name="BitmapPersistCacheLocation" value="\Temp" datatype="string"/>
      <parm name="Shadow Bitmap Enabled" value="1" datatype="integer"/>
      <parm name="CEConfig" value="Maxall" datatype="string"/>
      <parm name="MapVirtualKeyLib" value="\Windows\MvkLib.dll" datatype="string"/>
    </characteristic>
    <characteristic type="HKLM\SYSTEM\GWE">
      <parm name="LoadRdp" value="1" datatype="integer"/>
    </characteristic>
    <characteristic type="HKLM\System\StorageManager\AutoLoad\FilterFsd">
      <parm name="Dll" value="filterfsd.dll" datatype="string"/>
      <parm name="Paging" value="0" datatype="integer"/>
      <parm name="LoadFlags" value="1" datatype="integer"/>
      <parm name="BootPhase" value="2" datatype="integer"/>
      <parm name="MountFlags" value="1" datatype="integer"/>
      <parm name="FolderName" value="FILTERFS" datatype="string"/>
      <parm name="RootPath" value="\" datatype="string"/>
    </characteristic>
  </characteristic>
</wap-provisioningdoc>

ファイル名のマッピングが表示され、それらを評価または名前変更して、exe ファイルまたは dll ファイルからファイル バージョン情報を読み取ることができます (これらにそのような情報が含まれている場合、それは別のポイントです)。

于 2014-02-08T18:35:27.077 に答える