1

WIX インストーラ プロジェクトを作成しています。1 つのマネージド カスタマイズ アクション中に、インストール フォルダー (デフォルトでは Program Files フォルダー) にファイル (WIX のコンポーネントで指定されたデプロイ済みファイル以外) を作成する必要があります。Windows 7 で「アクセスが拒否されました」という問題が発生しています。検索を行った結果、Program Files フォルダーにファイルを作成することはお勧めできないと言う人がいることがわかりました。代わりに、たとえば AppData フォルダーにファイルを作成してみてください。たとえば、次のリンクを参照してください: C# Access denied to path in a Windows Application

しかし、私の質問は、生成されたファイルは SW にとって非常に重要であるため、インストール フォルダーに存在する必要があるということです。ほとんどの場合、Program Files フォルダにファイルを作成するのが、SW インストールの対象ではないでしょうか。インストール中にインストール フォルダに追加する必要があるのは、展開されたファイル (基本的に XCopy のターゲット) だけということですか?

ファイルを WIX でデプロイ可能にできません。つまり、インストール前に準備できません。このような状況を処理するための適切な方法またはベスト プラクティスは何ですか。インストール中に、インストール フォルダーにファイルを生成する必要があります。他の場所に置くことができるログファイルではありません。リンクに記載されているルールに反しているように見えますが、INSTALLADIR の WIX で Permission 要素を作成しようとしましたが、それでも失敗しました。ありがとう!

アップデート:

MichaelUrman の commen の 1 つに基づいて、さらに情報を追加します。生成されたファイルは、SW のインストール後に必要になり、SW の通常の起動時に必要になります。また、取り付け後の通常の使用では修正が必要だと思います。@caveman_dick の回答へのコメントで述べたように、私の CA は実際にはコミット フェーズにあります。それと通常の遅延 CA の間に違いがあるかどうかはわかりません。

4

2 に答える 2

3

カスタム アクションを に設定するとExecute="deferred"、昇格されたコマンドが実行され、ファイルを作成するために必要なアクセス許可が付与されます。

于 2012-07-09T17:43:10.760 に答える
1

メインアプリケーションからそのファイルを更新する必要があり、アプリケーションに昇格された特権は必要ないと想定しているため、3つのオプションがあります。

  1. 1つ目は最悪です。マニフェストがないと、実行可能ファイルがProgram Filesフォルダーに書き込もうとすると、通常、仮想ストアにリダイレクトされます(ファイルの仮想化を参照)。あなたの場合、これは起こっていないようですので、使用することはできません。
  2. 2番目のオプションは、ProgramDataフォルダー、Common Documentsなどの適切な場所、または(適切な場合は)LocalAppDataの下のユーザーごとの場所にこれを格納するようにアプリケーションを変更することです。これは通常、最良のアプローチですが、開発コストが最も高くなります。
  3. 最後に、3番目のオプションは、ファイルを作成してそのアクセス許可を変更し(または、場合によっては、ファイルを含むフォルダーのアクセス許可を変更し)、制限付きユーザーがこのファイルを変更できるようにすることです。これにアプローチするWindowsインストーラーの方法については、LockPermissionsまたはMsiLockPermissionsExを参照してください。このオプションを使用する場合は、システムを可能な限り安全に保つために、できるだけ少ないファイルまたはフォルダーのアクセス許可を変更してください。
于 2012-07-10T12:01:12.913 に答える