1

WinZip 自己解凍型アーカイブ (SFX) を使用してソフトウェアを配布しています。
私はこれそれを認識しています。しかし、それらは SFX シナリオでは機能しないようです。

インストール中に、SFX は、インストールを実行する (私が作成した) 含まれているプログラムを解凍して起動します。これには、Windows コントロール パネルの下にあるプログラム リストのレジストリ エントリの作成が含まれます。さらに、プログラムにはマニフェストがあります。したがって、「Vista-aware」にする必要があります。SFX 実行可能ファイルには、マニフェストも含まれています。

問題は、Program Compatibility Assistant (PCA) が "This program might not have installed correctly"とにかくメッセージをスローすることです。だから私の顧客は私が悪いプログラマだと言っています...

私はよくグーグルで検索し、多くのマイクロソフトのサイトを含め、PCA について多くのことを読みました。
それらは私にやるように言います:

  1. マニフェストを埋め込む
  2. Windows コントロール パネルの下にあるプログラム リストのレジストリ エントリを作成します。

私のマニフェストは次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <applicationRequestMinimum>
        <defaultAssemblyRequest permissionSetReference="Custom" />
        <PermissionSet class="System.Security.PermissionSet" version="1" Unrestricted="true" ID="Custom" SameSite="site" />
      </applicationRequestMinimum>
      <requestedPrivileges>
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
</asmv1:assembly>

それで、どこで間違ったのですか?
PCA のために他にやるべきことはありますか?
SFX 実行可能ファイルには、他のものを含める必要がありますか?

4

2 に答える 2

3

PE ヘッダーのバージョン フィールドを 6.0 に設定することで、NSIS の同様の問題を修正しました。それは私たちのアンインストーラーのためだったと思いますが、あなたのシナリオにも当てはまるかもしれません.

于 2012-02-10T16:19:27.027 に答える
2

他の回答で説明したように、キーはファイルの PE ( Portable Executable ) 部分にヘッダーを正しく設定することです。SFX ファイルと 7-zip を使用して自己解凍実行可能ファイルを構築しようとしたときに、この問題が発生しました。

Portable Executable (PE) 形式は、Windows オペレーティング システムの 32 ビットおよび 64 ビット バージョンで使用される実行可能ファイル、オブジェクト コード、DLL、FON フォント ファイル、およびその他のファイル形式です。PE 形式は、Windows OS ローダーがラップされた実行可能コードを管理するために必要な情報をカプセル化するデータ構造です。

注記: PEファイル形式はLinux の ELF に似います。

これらのファイルのビルドはスムーズに進みましたが、結果のファイルを Win7 で実行しようとすると、次のダイアログが表示されました。

                                 ss #1

ここでの最大のヒントは、このダイアログが PCA (Program Compatibility Assistant) によってスローされていることです。このエラーは、PCA が次のいずれかを検出したためにスローされています。

  1. プログラムの追加と削除にエントリが追加されませんでした
  2. PE 実行可能ファイルのバージョン フィールドが正しく設定されました

PE ツールによる固定

私たちの場合、問題の原因は#2のようでした。そこで、PE Toolsをダウンロードし、7-zip SFX ファイルを開きました。注:ファイルをロードしました7zS.sfx

ロードしたら、次のバージョン情報を a から a に変更し4ました6

                      ss #2

参考文献

于 2014-03-31T19:02:09.943 に答える