1

私はWIX3.6インストーラープロジェクトを設計しています。インストール中に、ユーザーにインストールフォルダーへのファイル作成権限を付与する必要があります(INSTALLDIR、特にデフォルトのインストールフォルダーであるプログラムファイルでは、ユーザーは通常、インストールでファイルを作成できません。いくつかの失敗が発生しました)。CreateFileプロパティを使用してPermission要素を設定することで実現できると思います。ただし、INSTALLDIRはディレクトリであり、CreateFolder、File、FileShare、Registry、ServiceInstallなどの要素のみが権限要素を持つことができます。だから誰かがそれを行う方法を教えてもらえますか?私のディレクトリ宣言は次のようなものです。

<Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="ProgramFiles64Folder">
      <Directory Id='MANUFACTUREFOLDER' Name='$(var.ManufacturerName)'>
        <Directory Id="INSTALLDIR" Name="$(var.ProductName)">

ありがとう!

更新:ファイルを作成できました(デプロイされたファイルではありませんが、1つのデプロイされたファイルに基づいて生成されたファイルであり、コミットフェーズのカスタムアクションで生成されます)。ただし、今説明したデプロイ済みファイルを削除する際に問題が発生します(他のファイルが正常に生成された後は使用されないため)。インストールフォルダがプログラムファイルの場合、カスタムアクションで削除できません。アクセスが拒否されたと表示されます。

もう1つは、CreateFolder要素の目的がよくわからないということです。その名前が示すように、その目的がフォルダを作成することである場合、ネストされたディレクトリは私のサンプルコードのように同じことをしませんか?また、Component要素(CreateFolder要素が存在する)とDirectory要素を分離することは非常に一般的であるため、そこでフォルダー構造を説明する方が明確だと思います。コンポーネントは、DirectoryReferenceを使用して正しいディレクトリを参照します。次に、複数のコンポーネントが同じディレクトリに存在することもよくあります。したがって、これらのコンポーネントの1つにCreateFolderを追加し、それらのコンポーネントの共通の親ディレクトリとしてデフォルトディレクトリを使用すると、それはどういう意味ですか?そのような構造は実際には直感的ではありません。

4

1 に答える 1

2

お気づきのとおり、CreateFolder要素にはPermission要素が含まれている場合があり、ディレクトリが指定されていない場合、デフォルトで親コンポーネントのディレクトリになります。したがって、構造は次のようになります。

<Directory Id="INSTALLDIR" Name="$(var.ProductName)">
  <Component>
    <CreateFolder>
      <Permission>
      </Permission>
    </CreateFolder>
  </Component>
</Directory>

ただし、VistaとWindows 7の制限およびWindowsロゴのガイドラインに基づいて、プログラムファイルディレクトリがかなりロックダウンされているため、これでまだ問題が発生しても驚かないでしょう。インストール後は、このディレクトリに書き込みを行わないでください。

于 2012-07-05T13:59:19.927 に答える